{
  "contractName": "TestDeposit",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "auctionValue",
      "outputs": [
        {
          "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": [
        {
          "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": "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": 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": [
        {
          "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": 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": "retrieveSignerPubkey",
      "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": "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": 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": "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": 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": [],
      "name": "reset",
      "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": true,
      "inputs": [],
      "name": "getState",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "setSignerFeeDivisor",
      "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": true,
      "inputs": [],
      "name": "getSignerFeeDivisor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_lotSizeSatoshis",
          "type": "uint64"
        }
      ],
      "name": "setLotSize",
      "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": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        }
      ],
      "name": "setInitialCollateralizedPercent",
      "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": "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": 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": [],
      "name": "getLiquidationAndCourtesyInitiated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "setKeepAddress",
      "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": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_signingGroupRequestedAt",
          "type": "uint256"
        }
      ],
      "name": "setSigningGroupRequestedAt",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSigningGroupRequestedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fundingProofTimerStart",
          "type": "uint256"
        }
      ],
      "name": "setFundingProofTimerStart",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getFundingProofTimerStart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": true,
      "inputs": [],
      "name": "getSigningGroupPublicKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": "uint256",
          "name": "_latestRedemptionFee",
          "type": "uint256"
        }
      ],
      "name": "setLatestRedemptionFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLatestRedemptionFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_redeemerAddress",
          "type": "address"
        }
      ],
      "name": "setRedeemerAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": 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": 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": false,
      "inputs": [],
      "name": "performRedemptionTbtcTransfers",
      "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": "bool",
          "name": "_wasFraud",
          "type": "bool"
        }
      ],
      "name": "startLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        }
      ],
      "name": "approveDigest",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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": 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": "getWithdrawalRequestTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_ethValue",
          "type": "uint256"
        }
      ],
      "name": "pushFundsToKeepGroup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAuctionBasePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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\":[],\"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\"}],\"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/TestDeposit.sol\":\"TestDeposit\"},\"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\"]},\"@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": "0x60806040526000805460ff191690553480156200001b57600080fd5b506200003463deadbeef6001600160e01b036200003a16565b620000f4565b6001600160a01b038116620000815760405162461bcd60e51b815260040180806020018281038252602381526020018062004d636023913960400191505060405180910390fd5b60005460ff1615620000c55760405162461bcd60e51b815260040180806020018281038252602581526020018062004d866025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b614c5f80620001046000396000f3fe6080604052600436106104675760003560e01c80638a7e64641161024a578063c415955911610139578063d9f74b0e116100b6578063f603f2eb1161007a578063f603f2eb146119bd578063f97a02fa146119e9578063fb7c592a14611a12578063fb90da6814611adf578063fc1e6db214611af457610467565b8063d9f74b0e14611632578063dba49153146118a5578063df27eb8914611954578063ea3db2501461197e578063f21cc71f1461199357610467565b8063d02fd958116100fd578063d02fd95814611280578063d459c416146112b3578063d5eef9711461151e578063d826f88f146115ea578063d8d02330146115ff57610467565b8063c4159559146111d5578063c4572eb91461120e578063c4d66de814611223578063c6254dba14611256578063c82ba9dd1461126b57610467565b8063a2af0419116101c7578063b6104f961161018b578063b6104f9614611157578063b6aef06f1461116c578063b7a34a7314611181578063ba346839146111ab578063bcb65607146111c057610467565b8063a2af041914611055578063a81e63f714611088578063abb3bb73146110df578063b1474a9714611112578063b4bd2e7a1461114257610467565b8063946fbf4c1161020e578063946fbf4c14610f18578063951303f514610f2d57806396aab31114610f425780639894d73414610f57578063994aa93114610f9357610467565b80638a7e646414610e4f57806390a2f68714610e7957806391d165e314610eab57806393c43bd014610ec0578063946626f414610eee57610467565b806335bc0ebe116103665780636ede1011116102e35780637a26f05a116102a75780637a26f05a14610c755780637be4227f14610ca357806384eb69aa14610d5e57806385df153d14610e2557806387a90d8014610e3a57610467565b80636ede101114610b9d5780637305919914610bc7578063735bd9d614610bdc57806374f1c69414610c0f57806376ef551014610c6057610467565b806356de96db1161032a57806356de96db14610a4957806360e98d5914610a7657806368b2bb3514610a8b5780636c3b011414610b575780636e4668be14610b8857610467565b806335bc0ebe1461099757806342dbc60a146109ac578063436fd9e6146109dc5780634cb24d4114610a065780634f706e4414610a3457610467565b80631865c57d116103f4578063287b32e5116103b8578063287b32e5146107565780632b0bc9811461076b5780632c735daa146107805780632d099442146107955780633322f9a01461086157610467565b80631865c57d1461069757806324315537146106c2578063245dc4c51461071757806324600fc31461072c578063259b1ea31461074157610467565b80630b3728c31161043b5780630b3728c3146105df5780630c3f6acf1461060d5780630d5889f4146106225780631209114a1461064e57806313f654df1461068257610467565b806249ce75146104a6578063022d44b71461055757806303c73ded1461058a578063058d3703146105b8575b36156104a45760405162461bcd60e51b815260040180806020018281038252603b815260200180614ad3603b913960400191505060405180910390fd5b005b3480156104b257600080fd5b506104a4600480360360208110156104c957600080fd5b810190602081018135600160201b8111156104e357600080fd5b8201836020820111156104f557600080fd5b803590602001918460018302840111600160201b8311171561051657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b24945050505050565b34801561056357600080fd5b506104a46004803603602081101561057a57600080fd5b50356001600160a01b0316611cbf565b34801561059657600080fd5b506104a4600480360360208110156105ad57600080fd5b503561ffff16611ce1565b3480156105c457600080fd5b506105cd611d01565b60408051918252519081900360200190f35b3480156105eb57600080fd5b506104a46004803603602081101561060257600080fd5b503561ffff16611d87565b34801561061957600080fd5b506105cd611d9f565b34801561062e57600080fd5b50610637611daf565b6040805161ffff9092168252519081900360200190f35b34801561065a57600080fd5b506104a46004803603602081101561067157600080fd5b503567ffffffffffffffff16611dc0565b34801561068e57600080fd5b506105cd611dee565b3480156106a357600080fd5b506106ac611d9f565b6040805160ff9092168252519081900360200190f35b3480156106ce57600080fd5b506104a4600480360360a08110156106e557600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516611efb565b34801561072357600080fd5b506105cd611f5a565b34801561073857600080fd5b506104a4611f60565b34801561074d57600080fd5b506104a4611f6c565b34801561076257600080fd5b506104a4611fd8565b34801561077757600080fd5b506104a461202a565b34801561078c57600080fd5b506104a461207c565b3480156107a157600080fd5b506104a4600480360360a08110156107b857600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b8111156107ed57600080fd5b8201836020820111156107ff57600080fd5b803590602001918460018302840111600160201b8311171561082057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120ce945050505050565b34801561086d57600080fd5b506105cd6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460018302840111600160201b831117156108d157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460018302840111600160201b8311171561095657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121cf945050505050565b3480156109a357600080fd5b506105cd612329565b3480156109b857600080fd5b506104a4600480360360408110156109cf57600080fd5b508035906020013561237d565b3480156109e857600080fd5b506104a4600480360360208110156109ff57600080fd5b5035612388565b348015610a1257600080fd5b50610a1b61239c565b6040805192835260208301919091528051918290030190f35b348015610a4057600080fd5b506104a46123a6565b348015610a5557600080fd5b506104a460048036036020811015610a6c57600080fd5b503560ff166123f8565b348015610a8257600080fd5b506105cd612418565b348015610a9757600080fd5b506104a4600480360360a0811015610aae57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610ad857600080fd5b820183602082011115610aea57600080fd5b803590602001918460018302840111600160201b83111715610b0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135612429565b348015610b6357600080fd5b50610b6c612468565b604080516001600160a01b039092168252519081900360200190f35b348015610b9457600080fd5b506105cd612477565b348015610ba957600080fd5b506104a460048036036020811015610bc057600080fd5b50356124cb565b348015610bd357600080fd5b506105cd6124d0565b348015610be857600080fd5b506104a460048036036020811015610bff57600080fd5b50356001600160a01b03166124d6565b348015610c1b57600080fd5b50610c4260048036036020811015610c3257600080fd5b50356001600160a01b03166124f8565b60408051938452602084019290925282820152519081900360600190f35b348015610c6c57600080fd5b5061063761251b565b348015610c8157600080fd5b506104a460048036036020811015610c9857600080fd5b503561ffff16612525565b348015610caf57600080fd5b50610cb8612547565b60405180866001600160a01b03166001600160a01b0316815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610d1f578181015183820152602001610d07565b50505050905090810190601f168015610d4c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d6a57600080fd5b506104a460048036036060811015610d8157600080fd5b6001600160c01b031982351691602081013591810190606081016040820135600160201b811115610db157600080fd5b820183602082011115610dc357600080fd5b803590602001918460018302840111600160201b83111715610de457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612611945050505050565b348015610e3157600080fd5b50610637612640565b348015610e4657600080fd5b506105cd612650565b348015610e5b57600080fd5b506104a460048036036020811015610e7257600080fd5b503561275e565b348015610e8557600080fd5b50610e8e61276f565b6040805167ffffffffffffffff9092168252519081900360200190f35b348015610eb757600080fd5b506104a4612786565b348015610ecc57600080fd5b506104a460048036036020811015610ee357600080fd5b503561ffff166127d8565b348015610efa57600080fd5b506104a460048036036020811015610f1157600080fd5b50356127fb565b348015610f2457600080fd5b506105cd612800565b348015610f3957600080fd5b506105cd612854565b348015610f4e57600080fd5b506104a4612865565b348015610f6357600080fd5b506104a460048036036040811015610f7a57600080fd5b506001600160c01b0319813581169160200135166128b7565b348015610f9f57600080fd5b506104a460048036036040811015610fb657600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115610fe157600080fd5b820183602082011115610ff357600080fd5b803590602001918460018302840111600160201b8311171561101457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061293d945050505050565b34801561106157600080fd5b506104a46004803603602081101561107857600080fd5b50356001600160a01b0316612a0f565b6104a4600480360360c081101561109e57600080fd5b5080356001600160a01b03908116916020810135821691604082013581169160608101358216916080820135169060a0013567ffffffffffffffff16612a31565b3480156110eb57600080fd5b506104a46004803603602081101561110257600080fd5b50356001600160a01b0316612b09565b34801561111e57600080fd5b506104a46004803603604081101561113557600080fd5b5080359060200135612b2b565b34801561114e57600080fd5b506104a4612b36565b34801561116357600080fd5b506105cd612b88565b34801561117857600080fd5b506105cd612b8e565b34801561118d57600080fd5b506105cd600480360360208110156111a457600080fd5b5035612b94565b3480156111b757600080fd5b506104a4612c24565b3480156111cc57600080fd5b506104a4612c76565b3480156111e157600080fd5b506104a4600480360360608110156111f857600080fd5b5060ff8135169060208101359060400135612c80565b34801561121a57600080fd5b506105cd612d06565b34801561122f57600080fd5b506104a46004803603602081101561124657600080fd5b50356001600160a01b0316612d12565b34801561126257600080fd5b50610a1b612dc8565b34801561127757600080fd5b506105cd612dd2565b34801561128c57600080fd5b506105cd600480360360208110156112a357600080fd5b50356001600160a01b0316612dd8565b3480156112bf57600080fd5b506104a4600480360360e08110156112d657600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561130157600080fd5b82018360208201111561131357600080fd5b803590602001918460018302840111600160201b8311171561133457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561138657600080fd5b82018360208201111561139857600080fd5b803590602001918460018302840111600160201b831117156113b957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516959094909350604081019250602001359050600160201b81111561141d57600080fd5b82018360208201111561142f57600080fd5b803590602001918460018302840111600160201b8311171561145057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156114aa57600080fd5b8201836020820111156114bc57600080fd5b803590602001918460018302840111600160201b831117156114dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612df7945050505050565b34801561152a57600080fd5b506104a4600480360360a081101561154157600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111600160201b831117156115a957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613039945050505050565b3480156115f657600080fd5b506104a46130cb565b34801561160b57600080fd5b506105cd6004803603602081101561162257600080fd5b50356001600160a01b0316613144565b34801561163e57600080fd5b506104a4600480360361010081101561165657600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561168157600080fd5b82018360208201111561169357600080fd5b803590602001918460018302840111600160201b831117156116b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561170657600080fd5b82018360208201111561171857600080fd5b803590602001918460018302840111600160201b8311171561173957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b8111156117a457600080fd5b8201836020820111156117b657600080fd5b803590602001918460018302840111600160201b831117156117d757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561183157600080fd5b82018360208201111561184357600080fd5b803590602001918460018302840111600160201b8311171561186457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613159945050505050565b3480156118b157600080fd5b506118ba6133a9565b60405180846001600160c01b0319166001600160c01b031916815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119175781810151838201526020016118ff565b50505050905090810190601f1680156119445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561196057600080fd5b506104a46004803603602081101561197757600080fd5b503561350f565b34801561198a57600080fd5b506104a4613514565b34801561199f57600080fd5b506104a4600480360360208110156119b657600080fd5b5035613566565b3480156119c957600080fd5b506104a4600480360360208110156119e057600080fd5b5035151561356b565b3480156119f557600080fd5b506119fe61357c565b604080519115158252519081900360200190f35b348015611a1e57600080fd5b506104a460048036036060811015611a3557600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115611a6057600080fd5b820183602082011115611a7257600080fd5b803590602001918460018302840111600160201b83111715611a9357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506135d09050565b348015611aeb57600080fd5b50610b6c6136f7565b348015611b0057600080fd5b506104a460048036036040811015611b1757600080fd5b5080359060200135613706565b6040805163ad91ce1f60e01b8152600160048201529051339173__DepositUtils__________________________9163ad91ce1f91602480820192602092909190829003018186803b158015611b7957600080fd5b505af4158015611b8d573d6000803e3d6000fd5b505050506040513d6020811015611ba357600080fd5b50516001600160a01b031614611bea5760405162461bcd60e51b8152600401808060200182810382526028815260200180614b0e6028913960400191505060405180910390fd5b60408051635f3c5d8960e01b81526001600482018181526024830193845284516044840152845173__DepositFunding________________________94635f3c5d8994879392606490910190602085019080838360005b83811015611c59578181015183820152602001611c41565b50505050905090810190601f168015611c865780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b158015611ca457600080fd5b505af4158015611cb8573d6000803e3d6000fd5b5050505050565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006805461ffff909216620100000263ffff000019909216919091179055565b6000600173__DepositUtils__________________________63a880784890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b505af4158015611d69573d6000803e3d6000fd5b505050506040513d6020811015611d7f57600080fd5b505190505b90565b6006805461ffff191661ffff92909216919091179055565b600554600160e01b900460ff1690565b600654600160201b900461ffff1690565b6005805467ffffffffffffffff909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000600173__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611e4257600080fd5b505af4158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b5051611ea95760405162461bcd60e51b8152600401808060200182810382526029815260200180614c026029913960400191505060405180910390fd5b604080516350ef3aa160e01b815260016004820152905173__DepositUtils__________________________916350ef3aa1916024808301926020929190829003018186803b158015611d5557600080fd5b600180546001600160a01b03199081166001600160a01b03978816179091556002805482169587169590951790945560038054851693861693909317909255600480548416918516919091179055600580549092169216919091179055565b600d5490565b611f6a6001613718565b565b6040805163426e16c160e01b815260016004820152905173__DepositFunding________________________9163426e16c1916024808301926000929190829003018186803b158015611fbe57600080fd5b505af4158015611fd2573d6000803e3d6000fd5b50505050565b6040805163077aceb960e31b815260016004820152905173__DepositLiquidation____________________91633bd675c8916024808301926000929190829003018186803b158015611fbe57600080fd5b6040805163439b7be160e11b815260016004820152905173__DepositRedemption_____________________91638736f7c2916024808301926000929190829003018186803b158015611fbe57600080fd5b60408051631754228360e11b815260016004820152905173__DepositLiquidation____________________91632ea84506916024808301926000929190829003018186803b158015611fbe57600080fd5b600173__DepositFunding________________________63fb12d9df909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612161578181015183820152602001612149565b50505050905090810190601f16801561218e5780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b1580156121b057600080fd5b505af41580156121c4573d6000803e3d6000fd5b505050505050505050565b6000600173__DepositRedemption_____________________63936b9ac5909185856040518463ffffffff1660e01b8152600401808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561224757818101518382015260200161222f565b50505050905090810190601f1680156122745780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156122a757818101518382015260200161228f565b50505050905090810190601f1680156122d45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b1580156122f457600080fd5b505af4158015612308573d6000803e3d6000fd5b505050506040513d602081101561231e57600080fd5b505190505b92915050565b6000600173__DepositUtils__________________________6391f88c8590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b600891909155600955565b61239960018263ffffffff61393516565b50565b6008546009549091565b604080516361f036d360e01b815260016004820152905173__DepositFunding________________________916361f036d3916024808301926000929190829003018186803b158015611fbe57600080fd5b6005805460ff909216600160e01b0260ff60e01b19909216919091179055565b600554600160e81b900461ffff1690565b601080546001600160a01b0319166001600160a01b03871617905583516124579060119060208701906149aa565b506012929092556014556015555050565b600b546001600160a01b031690565b6000600173__DepositLiquidation____________________63e86e97b690916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b601355565b60145490565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000808061250e6001858363ffffffff6139b216565b9250925092509193909250565b60065461ffff1690565b6005805461ffff909216600160e81b0261ffff60e81b19909216919091179055565b6010546012546014546015546011805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526000976060978997889788976001600160a01b0390941696939592949193909286918301828280156125f95780601f106125ce576101008083540402835291602001916125f9565b820191906000526020600020905b8154815290600101906020018083116125dc57829003601f168201915b50505050509350945094509450945094509091929394565b6016805467ffffffffffffffff191660c085901c17905560178290558051611fd29060189060208401906149aa565b60065462010000900461ffff1690565b6000600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156126a457600080fd5b505af41580156126b8573d6000803e3d6000fd5b505050506040513d60208110156126ce57600080fd5b50511561270c5760405162461bcd60e51b8152600401808060200182810382526041815260200180614a436041913960600191505060405180910390fd5b60408051631ec664f560e21b815260016004820152905173__DepositUtils__________________________91637b1993d4916024808301926020929190829003018186803b158015611d5557600080fd5b61239960018263ffffffff613c2916565b600554600160a01b900467ffffffffffffffff1690565b60408051634e40547560e11b815260016004820152905173__DepositLiquidation____________________91639c80a8ea916024808301926000929190829003018186803b158015611fbe57600080fd5b6006805461ffff909216600160201b0265ffff0000000019909216919091179055565b600d55565b6000600173__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b60006128606001613cef565b905090565b6040805163a221542160e01b815260016004820152905173__DepositLiquidation____________________9163a2215421916024808301926000929190829003018186803b158015611fbe57600080fd5b60408051632d0c21bf60e01b8152600160048201526001600160c01b0319808516602483015283166044820152905173__DepositRedemption_____________________91632d0c21bf916064808301926000929190829003018186803b15801561292157600080fd5b505af4158015612935573d6000803e3d6000fd5b505050505050565b604051632cac94ef60e01b81526001600482018181526001600160c01b03198516602484015260606044840190815284516064850152845173__DepositRedemption_____________________94632cac94ef94938893889391929091608490910190602085019080838360005b838110156129c35781810151838201526020016129ab565b50505050905090810190601f1680156129f05780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b15801561292157600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03199081166001600160a01b03898116919091178355600280548316898316179055600380548316888316179055600480548316878316178155600580549093169186169190911790915560408051632851e9dd60e01b81529182019290925267ffffffffffffffff83166024820152905173__DepositFunding________________________91632851e9dd916044808301926000929190829003018186803b158015612ae957600080fd5b505af4158015612afd573d6000803e3d6000fd5b50505050505050505050565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600e91909155600f55565b604080516324e8e19960e21b815260016004820152905173__DepositLiquidation____________________916393a38664916024808301926000929190829003018186803b158015611fbe57600080fd5b60085490565b60135490565b6000600173__DepositUtils__________________________631129a8a99091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015612bf057600080fd5b505af4158015612c04573d6000803e3d6000fd5b505050506040513d6020811015612c1a57600080fd5b505190505b919050565b604080516304bfa27760e01b815260016004820152905173__DepositRedemption_____________________916304bfa277916024808301926000929190829003018186803b158015611fbe57600080fd5b611f6a6001613d06565b60408051631e3435d560e11b81526001600482015260ff851660248201526044810184905260648101839052905173__DepositRedemption_____________________91633c686baa916084808301926000929190829003018186803b158015612ce957600080fd5b505af4158015612cfd573d6000803e3d6000fd5b50505050505050565b6000612860600161406b565b6001600160a01b038116612d575760405162461bcd60e51b8152600401808060200182810382526023815260200180614a846023913960400191505060405180910390fd5b60005460ff1615612d995760405162461bcd60e51b8152600401808060200182810382526025815260200180614bdd6025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b600e54600f549091565b600c5490565b600080612ded6001848363ffffffff6139b216565b5090949350505050565b604051636c7e2b9d60e01b81526001600482018181526001600160e01b0319808b1660248501528716608484015260c48301859052610100604484019081528951610104850152895173__DepositRedemption_____________________94636c7e2b9d94938d938d938d938d938d938d938d93606481019160a482019160e48101916101249091019060208d019080838360005b83811015612ea4578181015183820152602001612e8c565b50505050905090810190601f168015612ed15780820380516001836020036101000a031916815260200191505b5085810384528a5181528a516020918201918c019080838360005b83811015612f04578181015183820152602001612eec565b50505050905090810190601f168015612f315780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b83811015612f64578181015183820152602001612f4c565b50505050905090810190601f168015612f915780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015612fc4578181015183820152602001612fac565b50505050905090810190601f168015612ff15780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060006040518083038186803b15801561301857600080fd5b505af415801561302c573d6000803e3d6000fd5b5050505050505050505050565b600173__DepositLiquidation____________________634941676c909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff168152602001858152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383600083811015612161578181015183820152602001612149565b6130d560006123f8565b6130e060008061237d565b604080516020810190915260008082526130fc91818080612429565b61311b600060c01b600060405180602001604052806000815250612611565b6131256000611cbf565b61312f600061350f565b61313960006127fb565b611f6a600080612b2b565b600080612ded6001848163ffffffff6139b216565b60405163d745519360e01b81526001600482018181526001600160e01b0319808c1660248501528816608484015260ff871660a484015260e48301859052610120604484019081528a516101248501528a5173__DepositFunding________________________9463d745519394938e938e938e938e938e938e938e938e939291606482019160c4810191610104820191610144019060208e019080838360005b838110156132125781810151838201526020016131fa565b50505050905090810190601f16801561323f5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b8381101561327257818101518382015260200161325a565b50505050905090810190601f16801561329f5780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156132d25781810151838201526020016132ba565b50505050905090810190601f1680156132ff5780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b8381101561333257818101518382015260200161331a565b50505050905090810190601f16801561335f5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b15801561338757600080fd5b505af415801561339b573d6000803e3d6000fd5b505050505050505050505050565b6000806060600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561340057600080fd5b505af4158015613414573d6000803e3d6000fd5b505050506040513d602081101561342a57600080fd5b5051156134685760405162461bcd60e51b8152600401808060200182810382526041815260200180614a436041913960600191505060405180910390fd5b60165460175460188054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260c09590951b949183918301828280156134fd5780601f106134d2576101008083540402835291602001916134fd565b820191906000526020600020905b8154815290600101906020018083116134e057829003601f168201915b50505050509050925092509250909192565b600c55565b60408051632ec8740960e21b815260016004820152905173__DepositFunding________________________9163bb21d024916024808301926000929190829003018186803b158015611fbe57600080fd5b600755565b61239960018263ffffffff61408a16565b6000600173__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b6005546001600160a01b031633146136195760405162461bcd60e51b815260040180806020018281038252603e815260200180614b9f603e913960400191505060405180910390fd5b604051630d806ee760e41b81526001600482018181526001600160c01b0319861660248401526001600160a01b038416606484015260806044840190815285516084850152855173__DepositRedemption_____________________9463d806ee70949389938993899360a40190602086019080838360005b838110156136aa578181015183820152602001613692565b50505050905090810190601f1680156136d75780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b158015612ce957600080fd5b600a546001600160a01b031690565b6000918252601a602052604090912055565b336000908152601882016020908152604091829020548251635a33257560e01b8152600481018590529251909273__DepositStates_________________________92635a33257592602480840193829003018186803b15801561377b57600080fd5b505af415801561378f573d6000803e3d6000fd5b505050506040513d60208110156137a557600080fd5b50516137f8576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206e6f7420796574207465726d696e617465640000000000604482015290519081900360640190fd5b60008111613843576040805162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b604482015290519081900360640190fd5b80471015613898576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e6365000000604482015290519081900360640190fd5b3360008181526018840160205260408082208290555190919083908381818185875af1925050503d80600081146138eb576040519150601f19603f3d011682016040523d82523d6000602084013e6138f0565b606091505b50509050806139305760405162461bcd60e51b815260040180806020018281038252602c815260200180614aa7602c913960400191505060405180910390fd5b505050565b600a8201546040805163799cd33360e01b81526004810184905290516001600160a01b039092169163799cd3339160248082019260009290919082900301818387803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b505050600091825250601990910160205260409020429055565b60008060008084806139dd5750856001600160a01b03166139d2886143f0565b6001600160a01b0316145b90506000806139eb89614451565b118015613a7257508773__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613a4457600080fd5b505af4158015613a58573d6000803e3d6000fd5b505050506040513d6020811015613a6e57600080fd5b5051155b90508180613a7e575080155b613ab95760405162461bcd60e51b8152600401808060200182810382526048815260200180614b366048913960600191505060405180910390fd5b600080613ac58a614503565b6001600160a01b0316141590506000886001600160a01b0316613ae78b614503565b6001600160a01b03161490506000613afe8b6145e7565b90506000613b0f8286868987614613565b9050613b3381613b27613b218f614661565b896146f2565b9063ffffffff61470916565b60018d0154604080516370a0823160e01b81523060048201529051929b506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015613b8657600080fd5b505afa158015613b9a573d6000803e3d6000fd5b505050506040513d6020811015613bb057600080fd5b50519050808a1115613bd357613bcc8a8263ffffffff61476a16565b9950613bd8565b600099505b858015613be25750845b8015613bec575083155b15613bf5578297505b613c1788613c0b8581858f63ffffffff61470916565b9063ffffffff61476a16565b98505050505050505093509350939050565b80471015613c7e576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b8015613ceb57600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b158015613cd057600080fd5b505af1158015613ce4573d6000803e3d6000fd5b5050505050505b5050565b336000908152601882016020526040902054919050565b60008173__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d5957600080fd5b505af4158015613d6d573d6000803e3d6000fd5b505050506040513d6020811015613d8357600080fd5b505160408051631bf7ad3160e01b815260048101859052905191925060009173__DepositUtils__________________________91631bf7ad31916024808301926020929190829003018186803b158015613ddd57600080fd5b505af4158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b50516004840154600f8501549192506001600160a01b039081169160009182918291613e3c918991168363ffffffff6139b216565b919450925090508215613ed2576001870154604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015613ea557600080fd5b505af1158015613eb9573d6000803e3d6000fd5b505050506040513d6020811015613ecf57600080fd5b50505b8115613fe357836001600160a01b0316866001600160a01b03161415613f5e57600187015460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015613f4157600080fd5b505af1158015613f55573d6000803e3d6000fd5b50505050613fe3565b60018701546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015613fb657600080fd5b505af1158015613fca573d6000803e3d6000fd5b505050506040513d6020811015613fe057600080fd5b50505b8015612cfd5760018701546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561404157600080fd5b505af1158015614055573d6000803e3d6000fd5b505050506040513d60208110156121c457600080fd5b6005810154600090612323906127109061ffff1663ffffffff6147c716565b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b1580156140e457600080fd5b505af41580156140f8573d6000803e3d6000fd5b50505050600061410783614831565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b15801561416d57600080fd5b505af4158015614181573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156141d657600080fd5b505af41580156141ea573d6000803e3d6000fd5b505050506040513d602081101561420057600080fd5b5051801561420b5750825b156142fd578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561426157600080fd5b505af4158015614275573d6000803e3d6000fd5b5061428d92508691508390508463ffffffff61490516565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156142de57600080fd5b505af41580156142f2573d6000803e3d6000fd5b505050505050613ceb565b6009840180546001600160a01b03191633179055426007850155821561438b578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561436e57600080fd5b505af4158015614382573d6000803e3d6000fd5b50505050611fd2565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156143dc57600080fd5b505af4158015613ce4573d6000803e3d6000fd5b6002810154604080516331a9108f60e11b815230600482015290516000926001600160a01b031691636352211e916024808301926020929190829003018186803b15801561443d57600080fd5b505afa158015612c04573d6000803e3d6000fd5b6000806144d873__TBTCConstants_________________________63d565d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561449b57600080fd5b505af41580156144af573d6000803e3d6000fd5b505050506040513d60208110156144c557600080fd5b505160168501549063ffffffff61470916565b9050804210156144fa576144f2814263ffffffff61476a16565b915050612c1f565b50600092915050565b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b15801561455557600080fd5b505afa158015614569573d6000803e3d6000fd5b505050506040513d602081101561457f57600080fd5b505115612323576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b1580156145d357600080fd5b505afa158015612308573d6000803e3d6000fd5b600481015460009061232390600160e81b900461ffff1661460784614661565b9063ffffffff6147c716565b6000808580156146205750845b801561462a575082155b9050600086806146375750855b8061463f5750845b90506000811561464c5788015b82156146555788015b98975050505050505050565b600061232373__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b1580156146aa57600080fd5b505af41580156146be573d6000803e3d6000fd5b505050506040513d60208110156146d457600080fd5b50516004840154600160a01b900467ffffffffffffffff1690614951565b6000811561470257506000612323565b5090919050565b600082820183811015614763576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156147c1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080821161481d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161482857fe5b04949350505050565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561487e57600080fd5b505af1158015614892573d6000803e3d6000fd5b5047925050508281116148ec576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6148fc818463ffffffff61476a16565b95945050505050565b6001600160a01b0382166000908152601884016020526040902054614930908263ffffffff61470916565b6001600160a01b039092166000908152601890930160205250604090912055565b60008261496057506000612323565b8282028284828161496d57fe5b04146147635760405162461bcd60e51b8152600401808060200182810382526021815260200180614b7e6021913960400191505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106149eb57805160ff1916838001178555614a18565b82800160010185558215614a18579182015b82811115614a185782518255916020019190600101906149fd565b50614a24929150614a28565b5090565b611d8491905b80821115614a245760008155600101614a2e56fe4465706f73697420686173206e6f7420796574206265656e2066756e64656420616e6420686173206e6f20617661696c61626c652066756e64696e6720696e666f466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e4661696c656420746f2073656e6420776974686472617761626c6520616d6f756e7420746f2073656e6465724465706f73697420636f6e7472616374207761732063616c6c6564207769746820756e6b6e6f776e2066756e6374696f6e2073656c6563746f722e4f6e6c792054445420686f6c6465722063616e20726571756573742066756e6465722061626f72744f6e6c792054445420686f6c6465722063616e2072656465656d20756e6c657373206465706f7369742069732061742d7465726d206f7220696e20434f5552544553595f43414c4c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c79207468652076656e64696e67206d616368696e652063616e2063616c6c207472616e73666572416e6452657175657374526564656d7074696f6e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e4465706f73697420686173206e6f2066756e64732063757272656e746c792061742061756374696f6ea265627a7a7231582028a6d21edd1194c5f4e6813d50e4f9f18df70f58d55b84749d6e93138927d71064736f6c63430005110032466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e",
  "deployedBytecode": "0x6080604052600436106104675760003560e01c80638a7e64641161024a578063c415955911610139578063d9f74b0e116100b6578063f603f2eb1161007a578063f603f2eb146119bd578063f97a02fa146119e9578063fb7c592a14611a12578063fb90da6814611adf578063fc1e6db214611af457610467565b8063d9f74b0e14611632578063dba49153146118a5578063df27eb8914611954578063ea3db2501461197e578063f21cc71f1461199357610467565b8063d02fd958116100fd578063d02fd95814611280578063d459c416146112b3578063d5eef9711461151e578063d826f88f146115ea578063d8d02330146115ff57610467565b8063c4159559146111d5578063c4572eb91461120e578063c4d66de814611223578063c6254dba14611256578063c82ba9dd1461126b57610467565b8063a2af0419116101c7578063b6104f961161018b578063b6104f9614611157578063b6aef06f1461116c578063b7a34a7314611181578063ba346839146111ab578063bcb65607146111c057610467565b8063a2af041914611055578063a81e63f714611088578063abb3bb73146110df578063b1474a9714611112578063b4bd2e7a1461114257610467565b8063946fbf4c1161020e578063946fbf4c14610f18578063951303f514610f2d57806396aab31114610f425780639894d73414610f57578063994aa93114610f9357610467565b80638a7e646414610e4f57806390a2f68714610e7957806391d165e314610eab57806393c43bd014610ec0578063946626f414610eee57610467565b806335bc0ebe116103665780636ede1011116102e35780637a26f05a116102a75780637a26f05a14610c755780637be4227f14610ca357806384eb69aa14610d5e57806385df153d14610e2557806387a90d8014610e3a57610467565b80636ede101114610b9d5780637305919914610bc7578063735bd9d614610bdc57806374f1c69414610c0f57806376ef551014610c6057610467565b806356de96db1161032a57806356de96db14610a4957806360e98d5914610a7657806368b2bb3514610a8b5780636c3b011414610b575780636e4668be14610b8857610467565b806335bc0ebe1461099757806342dbc60a146109ac578063436fd9e6146109dc5780634cb24d4114610a065780634f706e4414610a3457610467565b80631865c57d116103f4578063287b32e5116103b8578063287b32e5146107565780632b0bc9811461076b5780632c735daa146107805780632d099442146107955780633322f9a01461086157610467565b80631865c57d1461069757806324315537146106c2578063245dc4c51461071757806324600fc31461072c578063259b1ea31461074157610467565b80630b3728c31161043b5780630b3728c3146105df5780630c3f6acf1461060d5780630d5889f4146106225780631209114a1461064e57806313f654df1461068257610467565b806249ce75146104a6578063022d44b71461055757806303c73ded1461058a578063058d3703146105b8575b36156104a45760405162461bcd60e51b815260040180806020018281038252603b815260200180614ad3603b913960400191505060405180910390fd5b005b3480156104b257600080fd5b506104a4600480360360208110156104c957600080fd5b810190602081018135600160201b8111156104e357600080fd5b8201836020820111156104f557600080fd5b803590602001918460018302840111600160201b8311171561051657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b24945050505050565b34801561056357600080fd5b506104a46004803603602081101561057a57600080fd5b50356001600160a01b0316611cbf565b34801561059657600080fd5b506104a4600480360360208110156105ad57600080fd5b503561ffff16611ce1565b3480156105c457600080fd5b506105cd611d01565b60408051918252519081900360200190f35b3480156105eb57600080fd5b506104a46004803603602081101561060257600080fd5b503561ffff16611d87565b34801561061957600080fd5b506105cd611d9f565b34801561062e57600080fd5b50610637611daf565b6040805161ffff9092168252519081900360200190f35b34801561065a57600080fd5b506104a46004803603602081101561067157600080fd5b503567ffffffffffffffff16611dc0565b34801561068e57600080fd5b506105cd611dee565b3480156106a357600080fd5b506106ac611d9f565b6040805160ff9092168252519081900360200190f35b3480156106ce57600080fd5b506104a4600480360360a08110156106e557600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516611efb565b34801561072357600080fd5b506105cd611f5a565b34801561073857600080fd5b506104a4611f60565b34801561074d57600080fd5b506104a4611f6c565b34801561076257600080fd5b506104a4611fd8565b34801561077757600080fd5b506104a461202a565b34801561078c57600080fd5b506104a461207c565b3480156107a157600080fd5b506104a4600480360360a08110156107b857600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b8111156107ed57600080fd5b8201836020820111156107ff57600080fd5b803590602001918460018302840111600160201b8311171561082057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120ce945050505050565b34801561086d57600080fd5b506105cd6004803603604081101561088457600080fd5b810190602081018135600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460018302840111600160201b831117156108d157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460018302840111600160201b8311171561095657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121cf945050505050565b3480156109a357600080fd5b506105cd612329565b3480156109b857600080fd5b506104a4600480360360408110156109cf57600080fd5b508035906020013561237d565b3480156109e857600080fd5b506104a4600480360360208110156109ff57600080fd5b5035612388565b348015610a1257600080fd5b50610a1b61239c565b6040805192835260208301919091528051918290030190f35b348015610a4057600080fd5b506104a46123a6565b348015610a5557600080fd5b506104a460048036036020811015610a6c57600080fd5b503560ff166123f8565b348015610a8257600080fd5b506105cd612418565b348015610a9757600080fd5b506104a4600480360360a0811015610aae57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610ad857600080fd5b820183602082011115610aea57600080fd5b803590602001918460018302840111600160201b83111715610b0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135612429565b348015610b6357600080fd5b50610b6c612468565b604080516001600160a01b039092168252519081900360200190f35b348015610b9457600080fd5b506105cd612477565b348015610ba957600080fd5b506104a460048036036020811015610bc057600080fd5b50356124cb565b348015610bd357600080fd5b506105cd6124d0565b348015610be857600080fd5b506104a460048036036020811015610bff57600080fd5b50356001600160a01b03166124d6565b348015610c1b57600080fd5b50610c4260048036036020811015610c3257600080fd5b50356001600160a01b03166124f8565b60408051938452602084019290925282820152519081900360600190f35b348015610c6c57600080fd5b5061063761251b565b348015610c8157600080fd5b506104a460048036036020811015610c9857600080fd5b503561ffff16612525565b348015610caf57600080fd5b50610cb8612547565b60405180866001600160a01b03166001600160a01b0316815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610d1f578181015183820152602001610d07565b50505050905090810190601f168015610d4c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d6a57600080fd5b506104a460048036036060811015610d8157600080fd5b6001600160c01b031982351691602081013591810190606081016040820135600160201b811115610db157600080fd5b820183602082011115610dc357600080fd5b803590602001918460018302840111600160201b83111715610de457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612611945050505050565b348015610e3157600080fd5b50610637612640565b348015610e4657600080fd5b506105cd612650565b348015610e5b57600080fd5b506104a460048036036020811015610e7257600080fd5b503561275e565b348015610e8557600080fd5b50610e8e61276f565b6040805167ffffffffffffffff9092168252519081900360200190f35b348015610eb757600080fd5b506104a4612786565b348015610ecc57600080fd5b506104a460048036036020811015610ee357600080fd5b503561ffff166127d8565b348015610efa57600080fd5b506104a460048036036020811015610f1157600080fd5b50356127fb565b348015610f2457600080fd5b506105cd612800565b348015610f3957600080fd5b506105cd612854565b348015610f4e57600080fd5b506104a4612865565b348015610f6357600080fd5b506104a460048036036040811015610f7a57600080fd5b506001600160c01b0319813581169160200135166128b7565b348015610f9f57600080fd5b506104a460048036036040811015610fb657600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115610fe157600080fd5b820183602082011115610ff357600080fd5b803590602001918460018302840111600160201b8311171561101457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061293d945050505050565b34801561106157600080fd5b506104a46004803603602081101561107857600080fd5b50356001600160a01b0316612a0f565b6104a4600480360360c081101561109e57600080fd5b5080356001600160a01b03908116916020810135821691604082013581169160608101358216916080820135169060a0013567ffffffffffffffff16612a31565b3480156110eb57600080fd5b506104a46004803603602081101561110257600080fd5b50356001600160a01b0316612b09565b34801561111e57600080fd5b506104a46004803603604081101561113557600080fd5b5080359060200135612b2b565b34801561114e57600080fd5b506104a4612b36565b34801561116357600080fd5b506105cd612b88565b34801561117857600080fd5b506105cd612b8e565b34801561118d57600080fd5b506105cd600480360360208110156111a457600080fd5b5035612b94565b3480156111b757600080fd5b506104a4612c24565b3480156111cc57600080fd5b506104a4612c76565b3480156111e157600080fd5b506104a4600480360360608110156111f857600080fd5b5060ff8135169060208101359060400135612c80565b34801561121a57600080fd5b506105cd612d06565b34801561122f57600080fd5b506104a46004803603602081101561124657600080fd5b50356001600160a01b0316612d12565b34801561126257600080fd5b50610a1b612dc8565b34801561127757600080fd5b506105cd612dd2565b34801561128c57600080fd5b506105cd600480360360208110156112a357600080fd5b50356001600160a01b0316612dd8565b3480156112bf57600080fd5b506104a4600480360360e08110156112d657600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561130157600080fd5b82018360208201111561131357600080fd5b803590602001918460018302840111600160201b8311171561133457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561138657600080fd5b82018360208201111561139857600080fd5b803590602001918460018302840111600160201b831117156113b957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516959094909350604081019250602001359050600160201b81111561141d57600080fd5b82018360208201111561142f57600080fd5b803590602001918460018302840111600160201b8311171561145057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156114aa57600080fd5b8201836020820111156114bc57600080fd5b803590602001918460018302840111600160201b831117156114dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612df7945050505050565b34801561152a57600080fd5b506104a4600480360360a081101561154157600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111600160201b831117156115a957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613039945050505050565b3480156115f657600080fd5b506104a46130cb565b34801561160b57600080fd5b506105cd6004803603602081101561162257600080fd5b50356001600160a01b0316613144565b34801561163e57600080fd5b506104a4600480360361010081101561165657600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561168157600080fd5b82018360208201111561169357600080fd5b803590602001918460018302840111600160201b831117156116b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561170657600080fd5b82018360208201111561171857600080fd5b803590602001918460018302840111600160201b8311171561173957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b8111156117a457600080fd5b8201836020820111156117b657600080fd5b803590602001918460018302840111600160201b831117156117d757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561183157600080fd5b82018360208201111561184357600080fd5b803590602001918460018302840111600160201b8311171561186457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613159945050505050565b3480156118b157600080fd5b506118ba6133a9565b60405180846001600160c01b0319166001600160c01b031916815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119175781810151838201526020016118ff565b50505050905090810190601f1680156119445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561196057600080fd5b506104a46004803603602081101561197757600080fd5b503561350f565b34801561198a57600080fd5b506104a4613514565b34801561199f57600080fd5b506104a4600480360360208110156119b657600080fd5b5035613566565b3480156119c957600080fd5b506104a4600480360360208110156119e057600080fd5b5035151561356b565b3480156119f557600080fd5b506119fe61357c565b604080519115158252519081900360200190f35b348015611a1e57600080fd5b506104a460048036036060811015611a3557600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115611a6057600080fd5b820183602082011115611a7257600080fd5b803590602001918460018302840111600160201b83111715611a9357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506135d09050565b348015611aeb57600080fd5b50610b6c6136f7565b348015611b0057600080fd5b506104a460048036036040811015611b1757600080fd5b5080359060200135613706565b6040805163ad91ce1f60e01b8152600160048201529051339173__DepositUtils__________________________9163ad91ce1f91602480820192602092909190829003018186803b158015611b7957600080fd5b505af4158015611b8d573d6000803e3d6000fd5b505050506040513d6020811015611ba357600080fd5b50516001600160a01b031614611bea5760405162461bcd60e51b8152600401808060200182810382526028815260200180614b0e6028913960400191505060405180910390fd5b60408051635f3c5d8960e01b81526001600482018181526024830193845284516044840152845173__DepositFunding________________________94635f3c5d8994879392606490910190602085019080838360005b83811015611c59578181015183820152602001611c41565b50505050905090810190601f168015611c865780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b158015611ca457600080fd5b505af4158015611cb8573d6000803e3d6000fd5b5050505050565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006805461ffff909216620100000263ffff000019909216919091179055565b6000600173__DepositUtils__________________________63a880784890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b505af4158015611d69573d6000803e3d6000fd5b505050506040513d6020811015611d7f57600080fd5b505190505b90565b6006805461ffff191661ffff92909216919091179055565b600554600160e01b900460ff1690565b600654600160201b900461ffff1690565b6005805467ffffffffffffffff909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000600173__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611e4257600080fd5b505af4158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b5051611ea95760405162461bcd60e51b8152600401808060200182810382526029815260200180614c026029913960400191505060405180910390fd5b604080516350ef3aa160e01b815260016004820152905173__DepositUtils__________________________916350ef3aa1916024808301926020929190829003018186803b158015611d5557600080fd5b600180546001600160a01b03199081166001600160a01b03978816179091556002805482169587169590951790945560038054851693861693909317909255600480548416918516919091179055600580549092169216919091179055565b600d5490565b611f6a6001613718565b565b6040805163426e16c160e01b815260016004820152905173__DepositFunding________________________9163426e16c1916024808301926000929190829003018186803b158015611fbe57600080fd5b505af4158015611fd2573d6000803e3d6000fd5b50505050565b6040805163077aceb960e31b815260016004820152905173__DepositLiquidation____________________91633bd675c8916024808301926000929190829003018186803b158015611fbe57600080fd5b6040805163439b7be160e11b815260016004820152905173__DepositRedemption_____________________91638736f7c2916024808301926000929190829003018186803b158015611fbe57600080fd5b60408051631754228360e11b815260016004820152905173__DepositLiquidation____________________91632ea84506916024808301926000929190829003018186803b158015611fbe57600080fd5b600173__DepositFunding________________________63fb12d9df909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612161578181015183820152602001612149565b50505050905090810190601f16801561218e5780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b1580156121b057600080fd5b505af41580156121c4573d6000803e3d6000fd5b505050505050505050565b6000600173__DepositRedemption_____________________63936b9ac5909185856040518463ffffffff1660e01b8152600401808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561224757818101518382015260200161222f565b50505050905090810190601f1680156122745780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156122a757818101518382015260200161228f565b50505050905090810190601f1680156122d45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b1580156122f457600080fd5b505af4158015612308573d6000803e3d6000fd5b505050506040513d602081101561231e57600080fd5b505190505b92915050565b6000600173__DepositUtils__________________________6391f88c8590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b600891909155600955565b61239960018263ffffffff61393516565b50565b6008546009549091565b604080516361f036d360e01b815260016004820152905173__DepositFunding________________________916361f036d3916024808301926000929190829003018186803b158015611fbe57600080fd5b6005805460ff909216600160e01b0260ff60e01b19909216919091179055565b600554600160e81b900461ffff1690565b601080546001600160a01b0319166001600160a01b03871617905583516124579060119060208701906149aa565b506012929092556014556015555050565b600b546001600160a01b031690565b6000600173__DepositLiquidation____________________63e86e97b690916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b601355565b60145490565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000808061250e6001858363ffffffff6139b216565b9250925092509193909250565b60065461ffff1690565b6005805461ffff909216600160e81b0261ffff60e81b19909216919091179055565b6010546012546014546015546011805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526000976060978997889788976001600160a01b0390941696939592949193909286918301828280156125f95780601f106125ce576101008083540402835291602001916125f9565b820191906000526020600020905b8154815290600101906020018083116125dc57829003601f168201915b50505050509350945094509450945094509091929394565b6016805467ffffffffffffffff191660c085901c17905560178290558051611fd29060189060208401906149aa565b60065462010000900461ffff1690565b6000600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156126a457600080fd5b505af41580156126b8573d6000803e3d6000fd5b505050506040513d60208110156126ce57600080fd5b50511561270c5760405162461bcd60e51b8152600401808060200182810382526041815260200180614a436041913960600191505060405180910390fd5b60408051631ec664f560e21b815260016004820152905173__DepositUtils__________________________91637b1993d4916024808301926020929190829003018186803b158015611d5557600080fd5b61239960018263ffffffff613c2916565b600554600160a01b900467ffffffffffffffff1690565b60408051634e40547560e11b815260016004820152905173__DepositLiquidation____________________91639c80a8ea916024808301926000929190829003018186803b158015611fbe57600080fd5b6006805461ffff909216600160201b0265ffff0000000019909216919091179055565b600d55565b6000600173__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b60006128606001613cef565b905090565b6040805163a221542160e01b815260016004820152905173__DepositLiquidation____________________9163a2215421916024808301926000929190829003018186803b158015611fbe57600080fd5b60408051632d0c21bf60e01b8152600160048201526001600160c01b0319808516602483015283166044820152905173__DepositRedemption_____________________91632d0c21bf916064808301926000929190829003018186803b15801561292157600080fd5b505af4158015612935573d6000803e3d6000fd5b505050505050565b604051632cac94ef60e01b81526001600482018181526001600160c01b03198516602484015260606044840190815284516064850152845173__DepositRedemption_____________________94632cac94ef94938893889391929091608490910190602085019080838360005b838110156129c35781810151838201526020016129ab565b50505050905090810190601f1680156129f05780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b15801561292157600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03199081166001600160a01b03898116919091178355600280548316898316179055600380548316888316179055600480548316878316178155600580549093169186169190911790915560408051632851e9dd60e01b81529182019290925267ffffffffffffffff83166024820152905173__DepositFunding________________________91632851e9dd916044808301926000929190829003018186803b158015612ae957600080fd5b505af4158015612afd573d6000803e3d6000fd5b50505050505050505050565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600e91909155600f55565b604080516324e8e19960e21b815260016004820152905173__DepositLiquidation____________________916393a38664916024808301926000929190829003018186803b158015611fbe57600080fd5b60085490565b60135490565b6000600173__DepositUtils__________________________631129a8a99091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015612bf057600080fd5b505af4158015612c04573d6000803e3d6000fd5b505050506040513d6020811015612c1a57600080fd5b505190505b919050565b604080516304bfa27760e01b815260016004820152905173__DepositRedemption_____________________916304bfa277916024808301926000929190829003018186803b158015611fbe57600080fd5b611f6a6001613d06565b60408051631e3435d560e11b81526001600482015260ff851660248201526044810184905260648101839052905173__DepositRedemption_____________________91633c686baa916084808301926000929190829003018186803b158015612ce957600080fd5b505af4158015612cfd573d6000803e3d6000fd5b50505050505050565b6000612860600161406b565b6001600160a01b038116612d575760405162461bcd60e51b8152600401808060200182810382526023815260200180614a846023913960400191505060405180910390fd5b60005460ff1615612d995760405162461bcd60e51b8152600401808060200182810382526025815260200180614bdd6025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b600e54600f549091565b600c5490565b600080612ded6001848363ffffffff6139b216565b5090949350505050565b604051636c7e2b9d60e01b81526001600482018181526001600160e01b0319808b1660248501528716608484015260c48301859052610100604484019081528951610104850152895173__DepositRedemption_____________________94636c7e2b9d94938d938d938d938d938d938d938d93606481019160a482019160e48101916101249091019060208d019080838360005b83811015612ea4578181015183820152602001612e8c565b50505050905090810190601f168015612ed15780820380516001836020036101000a031916815260200191505b5085810384528a5181528a516020918201918c019080838360005b83811015612f04578181015183820152602001612eec565b50505050905090810190601f168015612f315780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b83811015612f64578181015183820152602001612f4c565b50505050905090810190601f168015612f915780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015612fc4578181015183820152602001612fac565b50505050905090810190601f168015612ff15780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060006040518083038186803b15801561301857600080fd5b505af415801561302c573d6000803e3d6000fd5b5050505050505050505050565b600173__DepositLiquidation____________________634941676c909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff168152602001858152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383600083811015612161578181015183820152602001612149565b6130d560006123f8565b6130e060008061237d565b604080516020810190915260008082526130fc91818080612429565b61311b600060c01b600060405180602001604052806000815250612611565b6131256000611cbf565b61312f600061350f565b61313960006127fb565b611f6a600080612b2b565b600080612ded6001848163ffffffff6139b216565b60405163d745519360e01b81526001600482018181526001600160e01b0319808c1660248501528816608484015260ff871660a484015260e48301859052610120604484019081528a516101248501528a5173__DepositFunding________________________9463d745519394938e938e938e938e938e938e938e938e939291606482019160c4810191610104820191610144019060208e019080838360005b838110156132125781810151838201526020016131fa565b50505050905090810190601f16801561323f5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b8381101561327257818101518382015260200161325a565b50505050905090810190601f16801561329f5780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156132d25781810151838201526020016132ba565b50505050905090810190601f1680156132ff5780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b8381101561333257818101518382015260200161331a565b50505050905090810190601f16801561335f5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b15801561338757600080fd5b505af415801561339b573d6000803e3d6000fd5b505050505050505050505050565b6000806060600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561340057600080fd5b505af4158015613414573d6000803e3d6000fd5b505050506040513d602081101561342a57600080fd5b5051156134685760405162461bcd60e51b8152600401808060200182810382526041815260200180614a436041913960600191505060405180910390fd5b60165460175460188054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260c09590951b949183918301828280156134fd5780601f106134d2576101008083540402835291602001916134fd565b820191906000526020600020905b8154815290600101906020018083116134e057829003601f168201915b50505050509050925092509250909192565b600c55565b60408051632ec8740960e21b815260016004820152905173__DepositFunding________________________9163bb21d024916024808301926000929190829003018186803b158015611fbe57600080fd5b600755565b61239960018263ffffffff61408a16565b6000600173__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611d5557600080fd5b6005546001600160a01b031633146136195760405162461bcd60e51b815260040180806020018281038252603e815260200180614b9f603e913960400191505060405180910390fd5b604051630d806ee760e41b81526001600482018181526001600160c01b0319861660248401526001600160a01b038416606484015260806044840190815285516084850152855173__DepositRedemption_____________________9463d806ee70949389938993899360a40190602086019080838360005b838110156136aa578181015183820152602001613692565b50505050905090810190601f1680156136d75780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b158015612ce957600080fd5b600a546001600160a01b031690565b6000918252601a602052604090912055565b336000908152601882016020908152604091829020548251635a33257560e01b8152600481018590529251909273__DepositStates_________________________92635a33257592602480840193829003018186803b15801561377b57600080fd5b505af415801561378f573d6000803e3d6000fd5b505050506040513d60208110156137a557600080fd5b50516137f8576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206e6f7420796574207465726d696e617465640000000000604482015290519081900360640190fd5b60008111613843576040805162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b604482015290519081900360640190fd5b80471015613898576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e6365000000604482015290519081900360640190fd5b3360008181526018840160205260408082208290555190919083908381818185875af1925050503d80600081146138eb576040519150601f19603f3d011682016040523d82523d6000602084013e6138f0565b606091505b50509050806139305760405162461bcd60e51b815260040180806020018281038252602c815260200180614aa7602c913960400191505060405180910390fd5b505050565b600a8201546040805163799cd33360e01b81526004810184905290516001600160a01b039092169163799cd3339160248082019260009290919082900301818387803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b505050600091825250601990910160205260409020429055565b60008060008084806139dd5750856001600160a01b03166139d2886143f0565b6001600160a01b0316145b90506000806139eb89614451565b118015613a7257508773__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613a4457600080fd5b505af4158015613a58573d6000803e3d6000fd5b505050506040513d6020811015613a6e57600080fd5b5051155b90508180613a7e575080155b613ab95760405162461bcd60e51b8152600401808060200182810382526048815260200180614b366048913960600191505060405180910390fd5b600080613ac58a614503565b6001600160a01b0316141590506000886001600160a01b0316613ae78b614503565b6001600160a01b03161490506000613afe8b6145e7565b90506000613b0f8286868987614613565b9050613b3381613b27613b218f614661565b896146f2565b9063ffffffff61470916565b60018d0154604080516370a0823160e01b81523060048201529051929b506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015613b8657600080fd5b505afa158015613b9a573d6000803e3d6000fd5b505050506040513d6020811015613bb057600080fd5b50519050808a1115613bd357613bcc8a8263ffffffff61476a16565b9950613bd8565b600099505b858015613be25750845b8015613bec575083155b15613bf5578297505b613c1788613c0b8581858f63ffffffff61470916565b9063ffffffff61476a16565b98505050505050505093509350939050565b80471015613c7e576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b8015613ceb57600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b158015613cd057600080fd5b505af1158015613ce4573d6000803e3d6000fd5b5050505050505b5050565b336000908152601882016020526040902054919050565b60008173__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d5957600080fd5b505af4158015613d6d573d6000803e3d6000fd5b505050506040513d6020811015613d8357600080fd5b505160408051631bf7ad3160e01b815260048101859052905191925060009173__DepositUtils__________________________91631bf7ad31916024808301926020929190829003018186803b158015613ddd57600080fd5b505af4158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b50516004840154600f8501549192506001600160a01b039081169160009182918291613e3c918991168363ffffffff6139b216565b919450925090508215613ed2576001870154604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015613ea557600080fd5b505af1158015613eb9573d6000803e3d6000fd5b505050506040513d6020811015613ecf57600080fd5b50505b8115613fe357836001600160a01b0316866001600160a01b03161415613f5e57600187015460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015613f4157600080fd5b505af1158015613f55573d6000803e3d6000fd5b50505050613fe3565b60018701546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015613fb657600080fd5b505af1158015613fca573d6000803e3d6000fd5b505050506040513d6020811015613fe057600080fd5b50505b8015612cfd5760018701546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561404157600080fd5b505af1158015614055573d6000803e3d6000fd5b505050506040513d60208110156121c457600080fd5b6005810154600090612323906127109061ffff1663ffffffff6147c716565b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b1580156140e457600080fd5b505af41580156140f8573d6000803e3d6000fd5b50505050600061410783614831565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b15801561416d57600080fd5b505af4158015614181573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156141d657600080fd5b505af41580156141ea573d6000803e3d6000fd5b505050506040513d602081101561420057600080fd5b5051801561420b5750825b156142fd578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561426157600080fd5b505af4158015614275573d6000803e3d6000fd5b5061428d92508691508390508463ffffffff61490516565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156142de57600080fd5b505af41580156142f2573d6000803e3d6000fd5b505050505050613ceb565b6009840180546001600160a01b03191633179055426007850155821561438b578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561436e57600080fd5b505af4158015614382573d6000803e3d6000fd5b50505050611fd2565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156143dc57600080fd5b505af4158015613ce4573d6000803e3d6000fd5b6002810154604080516331a9108f60e11b815230600482015290516000926001600160a01b031691636352211e916024808301926020929190829003018186803b15801561443d57600080fd5b505afa158015612c04573d6000803e3d6000fd5b6000806144d873__TBTCConstants_________________________63d565d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561449b57600080fd5b505af41580156144af573d6000803e3d6000fd5b505050506040513d60208110156144c557600080fd5b505160168501549063ffffffff61470916565b9050804210156144fa576144f2814263ffffffff61476a16565b915050612c1f565b50600092915050565b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b15801561455557600080fd5b505afa158015614569573d6000803e3d6000fd5b505050506040513d602081101561457f57600080fd5b505115612323576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b1580156145d357600080fd5b505afa158015612308573d6000803e3d6000fd5b600481015460009061232390600160e81b900461ffff1661460784614661565b9063ffffffff6147c716565b6000808580156146205750845b801561462a575082155b9050600086806146375750855b8061463f5750845b90506000811561464c5788015b82156146555788015b98975050505050505050565b600061232373__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b1580156146aa57600080fd5b505af41580156146be573d6000803e3d6000fd5b505050506040513d60208110156146d457600080fd5b50516004840154600160a01b900467ffffffffffffffff1690614951565b6000811561470257506000612323565b5090919050565b600082820183811015614763576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156147c1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080821161481d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161482857fe5b04949350505050565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561487e57600080fd5b505af1158015614892573d6000803e3d6000fd5b5047925050508281116148ec576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6148fc818463ffffffff61476a16565b95945050505050565b6001600160a01b0382166000908152601884016020526040902054614930908263ffffffff61470916565b6001600160a01b039092166000908152601890930160205250604090912055565b60008261496057506000612323565b8282028284828161496d57fe5b04146147635760405162461bcd60e51b8152600401808060200182810382526021815260200180614b7e6021913960400191505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106149eb57805160ff1916838001178555614a18565b82800160010185558215614a18579182015b82811115614a185782518255916020019190600101906149fd565b50614a24929150614a28565b5090565b611d8491905b80821115614a245760008155600101614a2e56fe4465706f73697420686173206e6f7420796574206265656e2066756e64656420616e6420686173206e6f20617661696c61626c652066756e64696e6720696e666f466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e4661696c656420746f2073656e6420776974686472617761626c6520616d6f756e7420746f2073656e6465724465706f73697420636f6e7472616374207761732063616c6c6564207769746820756e6b6e6f776e2066756e6374696f6e2073656c6563746f722e4f6e6c792054445420686f6c6465722063616e20726571756573742066756e6465722061626f72744f6e6c792054445420686f6c6465722063616e2072656465656d20756e6c657373206465706f7369742069732061742d7465726d206f7220696e20434f5552544553595f43414c4c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c79207468652076656e64696e67206d616368696e652063616e2063616c6c207472616e73666572416e6452657175657374526564656d7074696f6e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e4465706f73697420686173206e6f2066756e64732063757272656e746c792061742061756374696f6ea265627a7a7231582028a6d21edd1194c5f4e6813d50e4f9f18df70f58d55b84749d6e93138927d71064736f6c63430005110032",
  "sourceMap": "352:7616:30:-;;;342:5:18;313:34;;-1:-1:-1;;313:34:18;;;391:80:30;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;:::-;352:7616:30;;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;352:7616:30:-;;;;;;;",
  "deployedSourceMap": "352:7616:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2662:8:2;:20;2641:126;;;;-1:-1:-1;;;2641:126:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:7616:30;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;3327:123::-;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3327:123::-;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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:7616:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;352:7616:30;;;-1:-1:-1;352:7616:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.5.17;\n\nimport {Deposit} from \"../../../contracts/deposit/Deposit.sol\";\nimport {ITBTCSystem} from \"../../interfaces/ITBTCSystem.sol\";\nimport {IERC721} from \"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\";\nimport {TBTCToken} from \"../../system/TBTCToken.sol\";\nimport {FeeRebateToken} from \"../../system/FeeRebateToken.sol\";\n\ncontract TestDeposit is Deposit {\n\n    constructor() public {\n    // solium-disable-previous-line no-empty-blocks\n    }\n\n    function initializeDeposit(\n        ITBTCSystem _tbtcSystem,\n        TBTCToken _tbtcToken,\n        IERC721 _tbtcDepositToken,\n        FeeRebateToken _feeRebateToken,\n        address _vendingMachineAddress,\n        uint64 _lotSizeSatoshis\n    ) public payable {\n        self.tbtcSystem = _tbtcSystem;\n        self.tbtcToken = _tbtcToken;\n        self.tbtcDepositToken = _tbtcDepositToken;\n        self.feeRebateToken = _feeRebateToken;\n        self.vendingMachineAddress = _vendingMachineAddress;\n        self.initialize(_lotSizeSatoshis);\n    }\n\n    function setExteriorAddresses(\n        address _sys,\n        address _token,\n        address _tbtcDepositToken,\n        address _feeRebateToken,\n        address _vendingMachineAddress\n    ) public {\n        self.tbtcSystem = ITBTCSystem(_sys);\n        self.tbtcToken = TBTCToken(_token);\n        self.tbtcDepositToken = IERC721(_tbtcDepositToken);\n        self.feeRebateToken = FeeRebateToken(_feeRebateToken);\n        self.vendingMachineAddress = _vendingMachineAddress;\n    }\n\n    function reset() public {\n        setState(0);\n        setLiquidationAndCourtesyInitated(0, 0);\n        setRequestInfo(address(0), \"\", 0, 0, bytes32(0));\n        setFundingInfo(bytes8(0), 0, \"\");\n\n        setKeepAddress(address(0));\n        setSigningGroupRequestedAt(0);\n        setFundingProofTimerStart(0);\n        setSigningGroupPublicKey(bytes32(0), bytes32(0));\n    }\n\n    function setState(uint8 _state) public {\n        self.currentState = _state;\n    }\n\n    function getState() public view returns (uint8) { return self.currentState; }\n\n    function setSignerFeeDivisor(uint16 _signerFeeDivisor) public {\n        self.signerFeeDivisor = _signerFeeDivisor;\n    }\n\n    function setKeepSetupFee(uint256 _fee) public {\n        self.keepSetupFee = _fee;\n    }\n\n    function getSignerFeeDivisor() public view returns (uint256) { return self.signerFeeDivisor; }\n\n    function setLotSize(uint64 _lotSizeSatoshis) public {\n        self.lotSizeSatoshis = _lotSizeSatoshis;\n    }\n\n    function setUndercollateralizedThresholdPercent(uint16 _undercollateralizedThresholdPercent) public {\n        self.undercollateralizedThresholdPercent = _undercollateralizedThresholdPercent;\n    }\n\n    function setInitialCollateralizedPercent(uint16 _initialCollateralizedPercent) public {\n        self.initialCollateralizedPercent = _initialCollateralizedPercent;\n    }\n\n    function setSeverelyUndercollateralizedThresholdPercent(uint16 _severelyUndercollateralizedThresholdPercent) public {\n        self.severelyUndercollateralizedThresholdPercent = _severelyUndercollateralizedThresholdPercent;\n    }\n\n    function setLiquidationAndCourtesyInitated(\n        uint256 _liquidation,\n        uint256 _courtesy\n    ) public {\n        self.liquidationInitiated = _liquidation;\n        self.courtesyCallInitiated = _courtesy;\n    }\n\n    function setLiquidationInitiator(address payable _initiator) public {\n        self.liquidationInitiator = _initiator;\n    }\n\n    function getLiquidationInitiator() public view returns (address) {\n        return self.liquidationInitiator;\n    }\n\n    function getLiquidationTimestamp() public view returns (uint256) {\n        return self.liquidationInitiated;\n    }\n\n    function getLiquidationAndCourtesyInitiated() public view returns (uint256, uint256) {\n        return (self.liquidationInitiated, self.courtesyCallInitiated);\n    }\n\n    function setKeepAddress(address _keepAddress) public {\n        self.keepAddress = _keepAddress;\n    }\n\n    function setVendingMachineAddress(address _vendingMachineAddress) public {\n        self.vendingMachineAddress = _vendingMachineAddress;\n    }\n\n    function setSigningGroupRequestedAt(uint256 _signingGroupRequestedAt) public {\n        self.signingGroupRequestedAt = _signingGroupRequestedAt;\n    }\n\n    function getSigningGroupRequestedAt() public view returns (uint256) {\n        return self.signingGroupRequestedAt;\n    }\n\n    function setFundingProofTimerStart(uint256 _fundingProofTimerStart) public {\n        self.fundingProofTimerStart = _fundingProofTimerStart;\n    }\n\n    function getFundingProofTimerStart() public view returns (uint256) {\n        return self.fundingProofTimerStart;\n    }\n\n    function setSigningGroupPublicKey(bytes32 _x,bytes32 _y) public {\n        self.signingGroupPubkeyX = _x;\n        self.signingGroupPubkeyY = _y;\n    }\n\n    function getSigningGroupPublicKey() public view returns (bytes32, bytes32){\n        return (self.signingGroupPubkeyX, self.signingGroupPubkeyY);\n    }\n\n    function setRequestInfo(\n        address payable _redeemerAddress,\n        bytes memory _redeemerOutputScript,\n        uint256 _initialRedemptionFee,\n        uint256 _withdrawalRequestTime,\n        bytes32 _lastRequestedDigest\n    ) public {\n        self.redeemerAddress = _redeemerAddress;\n        self.redeemerOutputScript = _redeemerOutputScript;\n        self.initialRedemptionFee = _initialRedemptionFee;\n        self.withdrawalRequestTime = _withdrawalRequestTime;\n        self.lastRequestedDigest = _lastRequestedDigest;\n    }\n\n    function setLatestRedemptionFee(uint256 _latestRedemptionFee) public {\n        self.latestRedemptionFee = _latestRedemptionFee;\n    }\n\n    function getLatestRedemptionFee() public view returns (uint256) {\n        return self.latestRedemptionFee;\n    }\n\n    function setRedeemerAddress(\n        address payable _redeemerAddress\n    ) public {\n        self.redeemerAddress = _redeemerAddress;\n    }\n\n    function getRequestInfo() public view returns (address, bytes memory, uint256, uint256, bytes32) {\n        return (\n            self.redeemerAddress,\n            self.redeemerOutputScript,\n            self.initialRedemptionFee,\n            self.withdrawalRequestTime,\n            self.lastRequestedDigest\n        );\n    }\n\n    function setFundingInfo(\n        bytes8 _utxoValueBytes,\n        uint256 _fundedAt,\n        bytes memory _utxoOutpoint\n    ) public {\n        self.utxoValueBytes = _utxoValueBytes;\n        self.fundedAt = _fundedAt;\n        self.utxoOutpoint = _utxoOutpoint;\n    }\n\n    function calculateRedemptionTbtcAmounts(address _redeemer) public view returns (uint256, uint256, uint256) {\n        return self.calculateRedemptionTbtcAmounts(_redeemer, false);\n    }\n\n    function performRedemptionTbtcTransfers() public {\n        self.performRedemptionTbtcTransfers();\n    }\n\n    function setDigestApprovedAtTime(bytes32 _digest, uint256 _timestamp) public {\n        self.approvedDigests[_digest] = _timestamp;\n    }\n\n    function startLiquidation(bool _wasFraud) public {\n        self.startLiquidation(_wasFraud);\n    }\n\n    // passthrough for direct testing\n    function approveDigest(bytes32 _digest) public {\n        return self.approveDigest(_digest);\n    }\n\n    function wasDigestApprovedForSigning(bytes32 _digest) public view returns (uint256) {\n        return self.wasDigestApprovedForSigning(_digest);\n    }\n\n    function redemptionTransactionChecks(\n        bytes memory _txInputVector,\n        bytes memory _txOutputVector\n    ) public view returns (uint256) {\n        return self.redemptionTransactionChecks(_txInputVector, _txOutputVector);\n    }\n\n    function getWithdrawalRequestTime() public view returns (uint256){\n        return self.withdrawalRequestTime;\n    }\n\n    function pushFundsToKeepGroup(uint256 _ethValue) public {\n        self.pushFundsToKeepGroup(_ethValue);\n    }\n\n    function getAuctionBasePercentage() public view returns (uint256) {\n        return self.getAuctionBasePercentage();\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol",
    "exportedSymbols": {
      "TestDeposit": [
        9852
      ]
    },
    "id": 9853,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9152,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:30"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol",
        "file": "../../../contracts/deposit/Deposit.sol",
        "id": 9154,
        "nodeType": "ImportDirective",
        "scope": 9853,
        "sourceUnit": 1135,
        "src": "25:63:30",
        "symbolAliases": [
          {
            "foreign": 9153,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol",
        "file": "../../interfaces/ITBTCSystem.sol",
        "id": 9156,
        "nodeType": "ImportDirective",
        "scope": 9853,
        "sourceUnit": 5512,
        "src": "89:61:30",
        "symbolAliases": [
          {
            "foreign": 9155,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol",
        "id": 9158,
        "nodeType": "ImportDirective",
        "scope": 9853,
        "sourceUnit": 18288,
        "src": "151:81:30",
        "symbolAliases": [
          {
            "foreign": 9157,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
        "file": "../../system/TBTCToken.sol",
        "id": 9160,
        "nodeType": "ImportDirective",
        "scope": 9853,
        "sourceUnit": 8562,
        "src": "233:53:30",
        "symbolAliases": [
          {
            "foreign": 9159,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol",
        "file": "../../system/FeeRebateToken.sol",
        "id": 9162,
        "nodeType": "ImportDirective",
        "scope": 9853,
        "sourceUnit": 6301,
        "src": "287:63:30",
        "symbolAliases": [
          {
            "foreign": 9161,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9163,
              "name": "Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1134,
              "src": "376:7:30",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Deposit_$1134",
                "typeString": "contract Deposit"
              }
            },
            "id": 9164,
            "nodeType": "InheritanceSpecifier",
            "src": "376:7:30"
          }
        ],
        "contractDependencies": [
          1134,
          6251
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 9852,
        "linearizedBaseContracts": [
          9852,
          1134,
          6251
        ],
        "name": "TestDeposit",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9167,
              "nodeType": "Block",
              "src": "412:59:30",
              "statements": []
            },
            "documentation": null,
            "id": 9168,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "402:2:30"
            },
            "returnParameters": {
              "id": 9166,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "412:0:30"
            },
            "scope": 9852,
            "src": "391:80:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9219,
              "nodeType": "Block",
              "src": "736:285:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9183,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "746:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9185,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcSystem",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3828,
                      "src": "746:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                        "typeString": "contract ITBTCSystem"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9186,
                      "name": "_tbtcSystem",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9170,
                      "src": "764:11:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                        "typeString": "contract ITBTCSystem"
                      }
                    },
                    "src": "746:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                      "typeString": "contract ITBTCSystem"
                    }
                  },
                  "id": 9188,
                  "nodeType": "ExpressionStatement",
                  "src": "746:29:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9189,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "785:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3830,
                      "src": "785:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9192,
                      "name": "_tbtcToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9172,
                      "src": "802:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "src": "785:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCToken_$8561",
                      "typeString": "contract TBTCToken"
                    }
                  },
                  "id": 9194,
                  "nodeType": "ExpressionStatement",
                  "src": "785:27:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9195,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "822:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9197,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcDepositToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3832,
                      "src": "822:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC721_$18287",
                        "typeString": "contract IERC721"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9198,
                      "name": "_tbtcDepositToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9174,
                      "src": "846:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC721_$18287",
                        "typeString": "contract IERC721"
                      }
                    },
                    "src": "822:41:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$18287",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 9200,
                  "nodeType": "ExpressionStatement",
                  "src": "822:41:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9201,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "873:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9203,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeRebateToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3834,
                      "src": "873:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9204,
                      "name": "_feeRebateToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9176,
                      "src": "895:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "src": "873:37:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                      "typeString": "contract FeeRebateToken"
                    }
                  },
                  "id": 9206,
                  "nodeType": "ExpressionStatement",
                  "src": "873:37:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9207,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "920:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9209,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vendingMachineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3836,
                      "src": "920:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9210,
                      "name": "_vendingMachineAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9178,
                      "src": "949:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "920:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9212,
                  "nodeType": "ExpressionStatement",
                  "src": "920:51:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9216,
                        "name": "_lotSizeSatoshis",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9180,
                        "src": "997:16:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9213,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "981:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9215,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1360,
                      "src": "981:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_uint64_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,uint64)"
                      }
                    },
                    "id": 9217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "981:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9218,
                  "nodeType": "ExpressionStatement",
                  "src": "981:33:30"
                }
              ]
            },
            "documentation": null,
            "id": 9220,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializeDeposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9170,
                  "name": "_tbtcSystem",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "513:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                    "typeString": "contract ITBTCSystem"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9169,
                    "name": "ITBTCSystem",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5511,
                    "src": "513:11:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                      "typeString": "contract ITBTCSystem"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9172,
                  "name": "_tbtcToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "546:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TBTCToken_$8561",
                    "typeString": "contract TBTCToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9171,
                    "name": "TBTCToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8561,
                    "src": "546:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCToken_$8561",
                      "typeString": "contract TBTCToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9174,
                  "name": "_tbtcDepositToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "576:25:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC721_$18287",
                    "typeString": "contract IERC721"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9173,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18287,
                    "src": "576:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$18287",
                      "typeString": "contract IERC721"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9176,
                  "name": "_feeRebateToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "611:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                    "typeString": "contract FeeRebateToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9175,
                    "name": "FeeRebateToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6300,
                    "src": "611:14:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                      "typeString": "contract FeeRebateToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9178,
                  "name": "_vendingMachineAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "651:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9177,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "651:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9180,
                  "name": "_lotSizeSatoshis",
                  "nodeType": "VariableDeclaration",
                  "scope": 9220,
                  "src": "691:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 9179,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "691:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "503:217:30"
            },
            "returnParameters": {
              "id": 9182,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "736:0:30"
            },
            "scope": 9852,
            "src": "477:544:30",
            "stateMutability": "payable",
            "superFunction": 1097,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9271,
              "nodeType": "Block",
              "src": "1224:280:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9233,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1234:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9235,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcSystem",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3828,
                      "src": "1234:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                        "typeString": "contract ITBTCSystem"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9237,
                          "name": "_sys",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9222,
                          "src": "1264:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 9236,
                        "name": "ITBTCSystem",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5511,
                        "src": "1252:11:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ITBTCSystem_$5511_$",
                          "typeString": "type(contract ITBTCSystem)"
                        }
                      },
                      "id": 9238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1252:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                        "typeString": "contract ITBTCSystem"
                      }
                    },
                    "src": "1234:35:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                      "typeString": "contract ITBTCSystem"
                    }
                  },
                  "id": 9240,
                  "nodeType": "ExpressionStatement",
                  "src": "1234:35:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9241,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1279:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9243,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3830,
                      "src": "1279:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9245,
                          "name": "_token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9224,
                          "src": "1306:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 9244,
                        "name": "TBTCToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8561,
                        "src": "1296:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TBTCToken_$8561_$",
                          "typeString": "type(contract TBTCToken)"
                        }
                      },
                      "id": 9246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1296:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "src": "1279:34:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCToken_$8561",
                      "typeString": "contract TBTCToken"
                    }
                  },
                  "id": 9248,
                  "nodeType": "ExpressionStatement",
                  "src": "1279:34:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9249,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1323:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9251,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tbtcDepositToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3832,
                      "src": "1323:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC721_$18287",
                        "typeString": "contract IERC721"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9253,
                          "name": "_tbtcDepositToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9226,
                          "src": "1355:17:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 9252,
                        "name": "IERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18287,
                        "src": "1347:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IERC721_$18287_$",
                          "typeString": "type(contract IERC721)"
                        }
                      },
                      "id": 9254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1347:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC721_$18287",
                        "typeString": "contract IERC721"
                      }
                    },
                    "src": "1323:50:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$18287",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 9256,
                  "nodeType": "ExpressionStatement",
                  "src": "1323:50:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9257,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1383:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9259,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeRebateToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3834,
                      "src": "1383:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9261,
                          "name": "_feeRebateToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9228,
                          "src": "1420:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 9260,
                        "name": "FeeRebateToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6300,
                        "src": "1405:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FeeRebateToken_$6300_$",
                          "typeString": "type(contract FeeRebateToken)"
                        }
                      },
                      "id": 9262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1405:31:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "src": "1383:53:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                      "typeString": "contract FeeRebateToken"
                    }
                  },
                  "id": 9264,
                  "nodeType": "ExpressionStatement",
                  "src": "1383:53:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9265,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1446:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9267,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vendingMachineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3836,
                      "src": "1446:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9268,
                      "name": "_vendingMachineAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9230,
                      "src": "1475:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1446:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9270,
                  "nodeType": "ExpressionStatement",
                  "src": "1446:51:30"
                }
              ]
            },
            "documentation": null,
            "id": 9272,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setExteriorAddresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9222,
                  "name": "_sys",
                  "nodeType": "VariableDeclaration",
                  "scope": 9272,
                  "src": "1066:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1066:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9224,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 9272,
                  "src": "1088:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1088:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9226,
                  "name": "_tbtcDepositToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9272,
                  "src": "1112:25:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1112:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9228,
                  "name": "_feeRebateToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9272,
                  "src": "1147:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1147:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9230,
                  "name": "_vendingMachineAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9272,
                  "src": "1180:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9229,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1180:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1056:160:30"
            },
            "returnParameters": {
              "id": 9232,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1224:0:30"
            },
            "scope": 9852,
            "src": "1027:477:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9327,
              "nodeType": "Block",
              "src": "1534:349:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1553:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9275,
                      "name": "setState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9340,
                      "src": "1544:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                        "typeString": "function (uint8)"
                      }
                    },
                    "id": 9277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:11:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9278,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:11:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1599:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1602:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9279,
                      "name": "setLiquidationAndCourtesyInitated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9450,
                      "src": "1565:33:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 9282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1565:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9283,
                  "nodeType": "ExpressionStatement",
                  "src": "1565:39:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1637:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1629:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1629:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 9288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1641:2:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1645:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9290,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1648:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1659:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1651:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 9293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1651:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9284,
                      "name": "setRequestInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9638,
                      "src": "1614:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$",
                        "typeString": "function (address payable,bytes memory,uint256,uint256,bytes32)"
                      }
                    },
                    "id": 9294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1614:48:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9295,
                  "nodeType": "ExpressionStatement",
                  "src": "1614:48:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1694:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1687:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes8_$",
                            "typeString": "type(bytes8)"
                          },
                          "typeName": "bytes8"
                        },
                        "id": 9299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1687:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1698:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 9301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1701:2:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 9296,
                      "name": "setFundingInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9725,
                      "src": "1672:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes8_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes8,uint256,bytes memory)"
                      }
                    },
                    "id": 9302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1672:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9303,
                  "nodeType": "ExpressionStatement",
                  "src": "1672:32:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1738:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1730:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1730:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 9304,
                      "name": "setKeepAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9506,
                      "src": "1715:14:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 9308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1715:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9309,
                  "nodeType": "ExpressionStatement",
                  "src": "1715:26:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1778:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9310,
                      "name": "setSigningGroupRequestedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9530,
                      "src": "1751:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1751:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9313,
                  "nodeType": "ExpressionStatement",
                  "src": "1751:29:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1816:1:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 9314,
                      "name": "setFundingProofTimerStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9551,
                      "src": "1790:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1790:28:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9317,
                  "nodeType": "ExpressionStatement",
                  "src": "1790:28:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1861:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1853:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 9321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1853:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1873:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 9322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1865:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 9324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1865:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9318,
                      "name": "setSigningGroupPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9580,
                      "src": "1828:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 9325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1828:48:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9326,
                  "nodeType": "ExpressionStatement",
                  "src": "1828:48:30"
                }
              ]
            },
            "documentation": null,
            "id": 9328,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1524:2:30"
            },
            "returnParameters": {
              "id": 9274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1534:0:30"
            },
            "scope": 9852,
            "src": "1510:373:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9339,
              "nodeType": "Block",
              "src": "1928:43:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9333,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1938:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9335,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "1938:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9336,
                      "name": "_state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9330,
                      "src": "1958:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1938:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 9338,
                  "nodeType": "ExpressionStatement",
                  "src": "1938:26:30"
                }
              ]
            },
            "documentation": null,
            "id": 9340,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9330,
                  "name": "_state",
                  "nodeType": "VariableDeclaration",
                  "scope": 9340,
                  "src": "1907:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9329,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1907:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1906:14:30"
            },
            "returnParameters": {
              "id": 9332,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1928:0:30"
            },
            "scope": 9852,
            "src": "1889:82:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9348,
              "nodeType": "Block",
              "src": "2025:29:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9345,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "2034:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9346,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "currentState",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3840,
                    "src": "2034:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 9344,
                  "id": 9347,
                  "nodeType": "Return",
                  "src": "2027:24:30"
                }
              ]
            },
            "documentation": null,
            "id": 9349,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1994:2:30"
            },
            "returnParameters": {
              "id": 9344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9343,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9349,
                  "src": "2018:5:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9342,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2018:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2017:7:30"
            },
            "scope": 9852,
            "src": "1977:77:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9360,
              "nodeType": "Block",
              "src": "2122:58:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9354,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2132:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9356,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signerFeeDivisor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3842,
                      "src": "2132:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9357,
                      "name": "_signerFeeDivisor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9351,
                      "src": "2156:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2132:41:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 9359,
                  "nodeType": "ExpressionStatement",
                  "src": "2132:41:30"
                }
              ]
            },
            "documentation": null,
            "id": 9361,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSignerFeeDivisor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9351,
                  "name": "_signerFeeDivisor",
                  "nodeType": "VariableDeclaration",
                  "scope": 9361,
                  "src": "2089:24:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9350,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2089:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2088:26:30"
            },
            "returnParameters": {
              "id": 9353,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2122:0:30"
            },
            "scope": 9852,
            "src": "2060:120:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9372,
              "nodeType": "Block",
              "src": "2232:41:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9366,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2242:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9368,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keepSetupFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3850,
                      "src": "2242:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9369,
                      "name": "_fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9363,
                      "src": "2262:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2242:24:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9371,
                  "nodeType": "ExpressionStatement",
                  "src": "2242:24:30"
                }
              ]
            },
            "documentation": null,
            "id": 9373,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setKeepSetupFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9363,
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 9373,
                  "src": "2211:12:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2211:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2210:14:30"
            },
            "returnParameters": {
              "id": 9365,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2232:0:30"
            },
            "scope": 9852,
            "src": "2186:87:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9381,
              "nodeType": "Block",
              "src": "2340:33:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9378,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "2349:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9379,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signerFeeDivisor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3842,
                    "src": "2349:21:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 9377,
                  "id": 9380,
                  "nodeType": "Return",
                  "src": "2342:28:30"
                }
              ]
            },
            "documentation": null,
            "id": 9382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSignerFeeDivisor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9374,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2307:2:30"
            },
            "returnParameters": {
              "id": 9377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9376,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9382,
                  "src": "2331:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9375,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2331:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2330:9:30"
            },
            "scope": 9852,
            "src": "2279:94:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9393,
              "nodeType": "Block",
              "src": "2431:56:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9387,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2441:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lotSizeSatoshis",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3838,
                      "src": "2441:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9390,
                      "name": "_lotSizeSatoshis",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9384,
                      "src": "2464:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2441:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 9392,
                  "nodeType": "ExpressionStatement",
                  "src": "2441:39:30"
                }
              ]
            },
            "documentation": null,
            "id": 9394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLotSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9384,
                  "name": "_lotSizeSatoshis",
                  "nodeType": "VariableDeclaration",
                  "scope": 9394,
                  "src": "2399:23:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 9383,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2399:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2398:25:30"
            },
            "returnParameters": {
              "id": 9386,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2431:0:30"
            },
            "scope": 9852,
            "src": "2379:108:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9405,
              "nodeType": "Block",
              "src": "2593:96:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9399,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2603:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9401,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "undercollateralizedThresholdPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3846,
                      "src": "2603:40:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9402,
                      "name": "_undercollateralizedThresholdPercent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9396,
                      "src": "2646:36:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2603:79:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 9404,
                  "nodeType": "ExpressionStatement",
                  "src": "2603:79:30"
                }
              ]
            },
            "documentation": null,
            "id": 9406,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUndercollateralizedThresholdPercent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9396,
                  "name": "_undercollateralizedThresholdPercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 9406,
                  "src": "2541:43:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9395,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2541:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2540:45:30"
            },
            "returnParameters": {
              "id": 9398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2593:0:30"
            },
            "scope": 9852,
            "src": "2493:196:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9417,
              "nodeType": "Block",
              "src": "2781:82:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9411,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2791:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9413,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initialCollateralizedPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3844,
                      "src": "2791:33:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9414,
                      "name": "_initialCollateralizedPercent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9408,
                      "src": "2827:29:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2791:65:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 9416,
                  "nodeType": "ExpressionStatement",
                  "src": "2791:65:30"
                }
              ]
            },
            "documentation": null,
            "id": 9418,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setInitialCollateralizedPercent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9408,
                  "name": "_initialCollateralizedPercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 9418,
                  "src": "2736:36:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9407,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2735:38:30"
            },
            "returnParameters": {
              "id": 9410,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2781:0:30"
            },
            "scope": 9852,
            "src": "2695:168:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9429,
              "nodeType": "Block",
              "src": "2985:112:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9423,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2995:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9425,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "severelyUndercollateralizedThresholdPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3848,
                      "src": "2995:48:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9426,
                      "name": "_severelyUndercollateralizedThresholdPercent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9420,
                      "src": "3046:44:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2995:95:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 9428,
                  "nodeType": "ExpressionStatement",
                  "src": "2995:95:30"
                }
              ]
            },
            "documentation": null,
            "id": 9430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSeverelyUndercollateralizedThresholdPercent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9420,
                  "name": "_severelyUndercollateralizedThresholdPercent",
                  "nodeType": "VariableDeclaration",
                  "scope": 9430,
                  "src": "2925:51:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9419,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2925:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2924:53:30"
            },
            "returnParameters": {
              "id": 9422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2985:0:30"
            },
            "scope": 9852,
            "src": "2869:228:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9449,
              "nodeType": "Block",
              "src": "3216:105:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9437,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3226:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidationInitiated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3852,
                      "src": "3226:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9440,
                      "name": "_liquidation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9432,
                      "src": "3254:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3226:40:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9442,
                  "nodeType": "ExpressionStatement",
                  "src": "3226:40:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9443,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3276:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "courtesyCallInitiated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3854,
                      "src": "3276:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9446,
                      "name": "_courtesy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9434,
                      "src": "3305:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3276:38:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9448,
                  "nodeType": "ExpressionStatement",
                  "src": "3276:38:30"
                }
              ]
            },
            "documentation": null,
            "id": 9450,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLiquidationAndCourtesyInitated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9432,
                  "name": "_liquidation",
                  "nodeType": "VariableDeclaration",
                  "scope": 9450,
                  "src": "3155:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9431,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3155:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9434,
                  "name": "_courtesy",
                  "nodeType": "VariableDeclaration",
                  "scope": 9450,
                  "src": "3185:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3185:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3145:63:30"
            },
            "returnParameters": {
              "id": 9436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3216:0:30"
            },
            "scope": 9852,
            "src": "3103:218:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9461,
              "nodeType": "Block",
              "src": "3395:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9455,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3405:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9457,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidationInitiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3856,
                      "src": "3405:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9458,
                      "name": "_initiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9452,
                      "src": "3433:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "3405:38:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 9460,
                  "nodeType": "ExpressionStatement",
                  "src": "3405:38:30"
                }
              ]
            },
            "documentation": null,
            "id": 9462,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLiquidationInitiator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9452,
                  "name": "_initiator",
                  "nodeType": "VariableDeclaration",
                  "scope": 9462,
                  "src": "3360:26:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3360:15:30",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3359:28:30"
            },
            "returnParameters": {
              "id": 9454,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3395:0:30"
            },
            "scope": 9852,
            "src": "3327:123:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9470,
              "nodeType": "Block",
              "src": "3521:49:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9467,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "3538:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9468,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "liquidationInitiator",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3856,
                    "src": "3538:25:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 9466,
                  "id": 9469,
                  "nodeType": "Return",
                  "src": "3531:32:30"
                }
              ]
            },
            "documentation": null,
            "id": 9471,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidationInitiator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3488:2:30"
            },
            "returnParameters": {
              "id": 9466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9465,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9471,
                  "src": "3512:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9464,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3512:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3511:9:30"
            },
            "scope": 9852,
            "src": "3456:114:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9479,
              "nodeType": "Block",
              "src": "3641:49:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9476,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "3658:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9477,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "liquidationInitiated",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3852,
                    "src": "3658:25:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9475,
                  "id": 9478,
                  "nodeType": "Return",
                  "src": "3651:32:30"
                }
              ]
            },
            "documentation": null,
            "id": 9480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidationTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3608:2:30"
            },
            "returnParameters": {
              "id": 9475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9474,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9480,
                  "src": "3632:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9473,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3632:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3631:9:30"
            },
            "scope": 9852,
            "src": "3576:114:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9493,
              "nodeType": "Block",
              "src": "3781:79:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9487,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "3799:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9488,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidationInitiated",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3852,
                        "src": "3799:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9489,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "3826:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9490,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "courtesyCallInitiated",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3854,
                        "src": "3826:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 9491,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3798:55:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 9486,
                  "id": 9492,
                  "nodeType": "Return",
                  "src": "3791:62:30"
                }
              ]
            },
            "documentation": null,
            "id": 9494,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidationAndCourtesyInitiated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9481,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3739:2:30"
            },
            "returnParameters": {
              "id": 9486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9483,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9494,
                  "src": "3763:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3763:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9485,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9494,
                  "src": "3772:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9484,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3772:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3762:18:30"
            },
            "scope": 9852,
            "src": "3696:164:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9505,
              "nodeType": "Block",
              "src": "3919:48:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9499,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3929:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9501,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keepAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3858,
                      "src": "3929:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9502,
                      "name": "_keepAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9496,
                      "src": "3948:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3929:31:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9504,
                  "nodeType": "ExpressionStatement",
                  "src": "3929:31:30"
                }
              ]
            },
            "documentation": null,
            "id": 9506,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setKeepAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9496,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9506,
                  "src": "3890:20:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9495,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3890:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3889:22:30"
            },
            "returnParameters": {
              "id": 9498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3919:0:30"
            },
            "scope": 9852,
            "src": "3866:101:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9517,
              "nodeType": "Block",
              "src": "4046:68:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9511,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "4056:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vendingMachineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3836,
                      "src": "4056:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9514,
                      "name": "_vendingMachineAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9508,
                      "src": "4085:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4056:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9516,
                  "nodeType": "ExpressionStatement",
                  "src": "4056:51:30"
                }
              ]
            },
            "documentation": null,
            "id": 9518,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setVendingMachineAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9508,
                  "name": "_vendingMachineAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9518,
                  "src": "4007:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9507,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4007:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4006:32:30"
            },
            "returnParameters": {
              "id": 9510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4046:0:30"
            },
            "scope": 9852,
            "src": "3973:141:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9529,
              "nodeType": "Block",
              "src": "4197:72:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9523,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "4207:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9525,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupRequestedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3860,
                      "src": "4207:28:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9526,
                      "name": "_signingGroupRequestedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9520,
                      "src": "4238:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4207:55:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9528,
                  "nodeType": "ExpressionStatement",
                  "src": "4207:55:30"
                }
              ]
            },
            "documentation": null,
            "id": 9530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSigningGroupRequestedAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9520,
                  "name": "_signingGroupRequestedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 9530,
                  "src": "4156:32:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4156:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4155:34:30"
            },
            "returnParameters": {
              "id": 9522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4197:0:30"
            },
            "scope": 9852,
            "src": "4120:149:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9538,
              "nodeType": "Block",
              "src": "4343:52:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9535,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "4360:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9536,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signingGroupRequestedAt",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3860,
                    "src": "4360:28:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9534,
                  "id": 9537,
                  "nodeType": "Return",
                  "src": "4353:35:30"
                }
              ]
            },
            "documentation": null,
            "id": 9539,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSigningGroupRequestedAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4310:2:30"
            },
            "returnParameters": {
              "id": 9534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9539,
                  "src": "4334:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9532,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4334:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4333:9:30"
            },
            "scope": 9852,
            "src": "4275:120:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9550,
              "nodeType": "Block",
              "src": "4476:70:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9544,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "4486:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9546,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundingProofTimerStart",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3862,
                      "src": "4486:27:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9547,
                      "name": "_fundingProofTimerStart",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9541,
                      "src": "4516:23:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4486:53:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9549,
                  "nodeType": "ExpressionStatement",
                  "src": "4486:53:30"
                }
              ]
            },
            "documentation": null,
            "id": 9551,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFundingProofTimerStart",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9541,
                  "name": "_fundingProofTimerStart",
                  "nodeType": "VariableDeclaration",
                  "scope": 9551,
                  "src": "4436:31:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9540,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4436:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4435:33:30"
            },
            "returnParameters": {
              "id": 9543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4476:0:30"
            },
            "scope": 9852,
            "src": "4401:145:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9559,
              "nodeType": "Block",
              "src": "4619:51:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9556,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "4636:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9557,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "fundingProofTimerStart",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3862,
                    "src": "4636:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9555,
                  "id": 9558,
                  "nodeType": "Return",
                  "src": "4629:34:30"
                }
              ]
            },
            "documentation": null,
            "id": 9560,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFundingProofTimerStart",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9552,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4586:2:30"
            },
            "returnParameters": {
              "id": 9555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9554,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9560,
                  "src": "4610:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4610:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4609:9:30"
            },
            "scope": 9852,
            "src": "4552:118:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9579,
              "nodeType": "Block",
              "src": "4740:85:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9567,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "4750:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9569,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3864,
                      "src": "4750:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9570,
                      "name": "_x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9562,
                      "src": "4777:2:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "4750:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9572,
                  "nodeType": "ExpressionStatement",
                  "src": "4750:29:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9573,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "4789:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9575,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3866,
                      "src": "4789:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9576,
                      "name": "_y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9564,
                      "src": "4816:2:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "4789:29:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9578,
                  "nodeType": "ExpressionStatement",
                  "src": "4789:29:30"
                }
              ]
            },
            "documentation": null,
            "id": 9580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSigningGroupPublicKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9562,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9580,
                  "src": "4710:10:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9561,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4710:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9564,
                  "name": "_y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9580,
                  "src": "4721:10:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9563,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4721:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4709:23:30"
            },
            "returnParameters": {
              "id": 9566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4740:0:30"
            },
            "scope": 9852,
            "src": "4676:149:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9593,
              "nodeType": "Block",
              "src": "4905:76:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9587,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "4923:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9588,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signingGroupPubkeyX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3864,
                        "src": "4923:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9589,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "4949:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9590,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signingGroupPubkeyY",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3866,
                        "src": "4949:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 9591,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4922:52:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 9586,
                  "id": 9592,
                  "nodeType": "Return",
                  "src": "4915:59:30"
                }
              ]
            },
            "documentation": null,
            "id": 9594,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSigningGroupPublicKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4864:2:30"
            },
            "returnParameters": {
              "id": 9586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9583,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9594,
                  "src": "4888:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9582,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4888:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9585,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9594,
                  "src": "4897:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9584,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4897:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4887:18:30"
            },
            "scope": 9852,
            "src": "4831:150:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9637,
              "nodeType": "Block",
              "src": "5227:292:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9607,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5237:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9609,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "redeemerAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3868,
                      "src": "5237:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9610,
                      "name": "_redeemerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9596,
                      "src": "5260:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5237:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 9612,
                  "nodeType": "ExpressionStatement",
                  "src": "5237:39:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9613,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5286:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9615,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "redeemerOutputScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3870,
                      "src": "5286:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9616,
                      "name": "_redeemerOutputScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9598,
                      "src": "5314:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5286:49:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 9618,
                  "nodeType": "ExpressionStatement",
                  "src": "5286:49:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9619,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5345:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9621,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initialRedemptionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3872,
                      "src": "5345:25:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9622,
                      "name": "_initialRedemptionFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9600,
                      "src": "5373:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5345:49:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9624,
                  "nodeType": "ExpressionStatement",
                  "src": "5345:49:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9625,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5404:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9627,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "withdrawalRequestTime",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3876,
                      "src": "5404:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9628,
                      "name": "_withdrawalRequestTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9602,
                      "src": "5433:22:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5404:51:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9630,
                  "nodeType": "ExpressionStatement",
                  "src": "5404:51:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9631,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5465:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9633,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lastRequestedDigest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3878,
                      "src": "5465:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9634,
                      "name": "_lastRequestedDigest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9604,
                      "src": "5492:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5465:47:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9636,
                  "nodeType": "ExpressionStatement",
                  "src": "5465:47:30"
                }
              ]
            },
            "documentation": null,
            "id": 9638,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setRequestInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9596,
                  "name": "_redeemerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9638,
                  "src": "5020:32:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9595,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5020:15:30",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9598,
                  "name": "_redeemerOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 9638,
                  "src": "5062:34:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9597,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5062:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9600,
                  "name": "_initialRedemptionFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 9638,
                  "src": "5106:29:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9599,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5106:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9602,
                  "name": "_withdrawalRequestTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 9638,
                  "src": "5145:30:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5145:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9604,
                  "name": "_lastRequestedDigest",
                  "nodeType": "VariableDeclaration",
                  "scope": 9638,
                  "src": "5185:28:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9603,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5010:209:30"
            },
            "returnParameters": {
              "id": 9606,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5227:0:30"
            },
            "scope": 9852,
            "src": "4987:532:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9649,
              "nodeType": "Block",
              "src": "5594:64:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9643,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5604:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9645,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "latestRedemptionFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3874,
                      "src": "5604:24:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9646,
                      "name": "_latestRedemptionFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9640,
                      "src": "5631:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5604:47:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9648,
                  "nodeType": "ExpressionStatement",
                  "src": "5604:47:30"
                }
              ]
            },
            "documentation": null,
            "id": 9650,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLatestRedemptionFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9640,
                  "name": "_latestRedemptionFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 9650,
                  "src": "5557:28:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5557:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5556:30:30"
            },
            "returnParameters": {
              "id": 9642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5594:0:30"
            },
            "scope": 9852,
            "src": "5525:133:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9658,
              "nodeType": "Block",
              "src": "5728:48:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9655,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "5745:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9656,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "latestRedemptionFee",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3874,
                    "src": "5745:24:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9654,
                  "id": 9657,
                  "nodeType": "Return",
                  "src": "5738:31:30"
                }
              ]
            },
            "documentation": null,
            "id": 9659,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLatestRedemptionFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9651,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5695:2:30"
            },
            "returnParameters": {
              "id": 9654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9653,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9659,
                  "src": "5719:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5719:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5718:9:30"
            },
            "scope": 9852,
            "src": "5664:112:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9670,
              "nodeType": "Block",
              "src": "5865:56:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9664,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "5875:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "redeemerAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3868,
                      "src": "5875:20:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9667,
                      "name": "_redeemerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9661,
                      "src": "5898:16:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5875:39:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 9669,
                  "nodeType": "ExpressionStatement",
                  "src": "5875:39:30"
                }
              ]
            },
            "documentation": null,
            "id": 9671,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setRedeemerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9661,
                  "name": "_redeemerAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9671,
                  "src": "5819:32:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9660,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5819:15:30",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5809:48:30"
            },
            "returnParameters": {
              "id": 9663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5865:0:30"
            },
            "scope": 9852,
            "src": "5782:139:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9696,
              "nodeType": "Block",
              "src": "6024:224:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9684,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6055:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9685,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "redeemerAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3868,
                        "src": "6055:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9686,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6089:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9687,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "redeemerOutputScript",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3870,
                        "src": "6089:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9688,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6128:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9689,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "initialRedemptionFee",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3872,
                        "src": "6128:25:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9690,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6167:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "withdrawalRequestTime",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3876,
                        "src": "6167:26:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9692,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6207:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9693,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lastRequestedDigest",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3878,
                        "src": "6207:24:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 9694,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6041:200:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_payable_$_t_bytes_storage_$_t_uint256_$_t_uint256_$_t_bytes32_$",
                      "typeString": "tuple(address payable,bytes storage ref,uint256,uint256,bytes32)"
                    }
                  },
                  "functionReturnParameters": 9683,
                  "id": 9695,
                  "nodeType": "Return",
                  "src": "6034:207:30"
                }
              ]
            },
            "documentation": null,
            "id": 9697,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRequestInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9672,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5950:2:30"
            },
            "returnParameters": {
              "id": 9683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9674,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "5974:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9673,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5974:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9676,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "5983:12:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9675,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5983:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9678,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "5997:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5997:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9680,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "6006:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6006:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9682,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "6015:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9681,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6015:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5973:50:30"
            },
            "scope": 9852,
            "src": "5927:321:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9724,
              "nodeType": "Block",
              "src": "6386:132:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9706,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "6396:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9708,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "utxoValueBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3880,
                      "src": "6396:19:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9709,
                      "name": "_utxoValueBytes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9699,
                      "src": "6418:15:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "src": "6396:37:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "id": 9711,
                  "nodeType": "ExpressionStatement",
                  "src": "6396:37:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9712,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "6443:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9714,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3882,
                      "src": "6443:13:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9715,
                      "name": "_fundedAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9701,
                      "src": "6459:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6443:25:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9717,
                  "nodeType": "ExpressionStatement",
                  "src": "6443:25:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9718,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "6478:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9720,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "utxoOutpoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "6478:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9721,
                      "name": "_utxoOutpoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9703,
                      "src": "6498:13:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "6478:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 9723,
                  "nodeType": "ExpressionStatement",
                  "src": "6478:33:30"
                }
              ]
            },
            "documentation": null,
            "id": 9725,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFundingInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9699,
                  "name": "_utxoValueBytes",
                  "nodeType": "VariableDeclaration",
                  "scope": 9725,
                  "src": "6287:22:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 9698,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "6287:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9701,
                  "name": "_fundedAt",
                  "nodeType": "VariableDeclaration",
                  "scope": 9725,
                  "src": "6319:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6319:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9703,
                  "name": "_utxoOutpoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 9725,
                  "src": "6346:26:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9702,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6346:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6277:101:30"
            },
            "returnParameters": {
              "id": 9705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6386:0:30"
            },
            "scope": 9852,
            "src": "6254:264:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9742,
              "nodeType": "Block",
              "src": "6631:77:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9738,
                        "name": "_redeemer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9727,
                        "src": "6684:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 9739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6695:5:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9736,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "6648:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9737,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "calculateRedemptionTbtcAmounts",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5032,
                      "src": "6648:35:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_bool_$returns$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,address,bool) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 9740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6648:53:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 9735,
                  "id": 9741,
                  "nodeType": "Return",
                  "src": "6641:60:30"
                }
              ]
            },
            "documentation": null,
            "id": 9743,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "calculateRedemptionTbtcAmounts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9728,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9727,
                  "name": "_redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 9743,
                  "src": "6564:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9726,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6564:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6563:19:30"
            },
            "returnParameters": {
              "id": 9735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9730,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9743,
                  "src": "6604:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6604:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9732,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9743,
                  "src": "6613:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9731,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6613:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9734,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9743,
                  "src": "6622:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6622:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6603:27:30"
            },
            "scope": 9852,
            "src": "6524:184:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9751,
              "nodeType": "Block",
              "src": "6763:54:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9746,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "6773:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9748,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "performRedemptionTbtcTransfers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2546,
                      "src": "6773:35:30",
                      "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": 9749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6773:37:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9750,
                  "nodeType": "ExpressionStatement",
                  "src": "6773:37:30"
                }
              ]
            },
            "documentation": null,
            "id": 9752,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "performRedemptionTbtcTransfers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6753:2:30"
            },
            "returnParameters": {
              "id": 9745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6763:0:30"
            },
            "scope": 9852,
            "src": "6714:103:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9767,
              "nodeType": "Block",
              "src": "6900:59:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9759,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 536,
                          "src": "6910:4:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                            "typeString": "struct DepositUtils.Deposit storage ref"
                          }
                        },
                        "id": 9762,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "approvedDigests",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3892,
                        "src": "6910:20:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 9763,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9761,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9754,
                        "src": "6931:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6910:29:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9764,
                      "name": "_timestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9756,
                      "src": "6942:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6910:42:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9766,
                  "nodeType": "ExpressionStatement",
                  "src": "6910:42:30"
                }
              ]
            },
            "documentation": null,
            "id": 9768,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDigestApprovedAtTime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9754,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 9768,
                  "src": "6856:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9753,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6856:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9756,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 9768,
                  "src": "6873:18:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9755,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6873:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6855:37:30"
            },
            "returnParameters": {
              "id": 9758,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6900:0:30"
            },
            "scope": 9852,
            "src": "6823:136:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9779,
              "nodeType": "Block",
              "src": "7014:49:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9776,
                        "name": "_wasFraud",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9770,
                        "src": "7046:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9773,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7024:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9775,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1957,
                      "src": "7024:21:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bool)"
                      }
                    },
                    "id": 9777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7024:32:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9778,
                  "nodeType": "ExpressionStatement",
                  "src": "7024:32:30"
                }
              ]
            },
            "documentation": null,
            "id": 9780,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "startLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9770,
                  "name": "_wasFraud",
                  "nodeType": "VariableDeclaration",
                  "scope": 9780,
                  "src": "6991:14:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9769,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6991:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6990:16:30"
            },
            "returnParameters": {
              "id": 9772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7014:0:30"
            },
            "scope": 9852,
            "src": "6965:98:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9790,
              "nodeType": "Block",
              "src": "7154:51:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9787,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9782,
                        "src": "7190:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9785,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7171:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9786,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approveDigest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2450,
                      "src": "7171:18:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes32)"
                      }
                    },
                    "id": 9788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7171:27:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 9784,
                  "id": 9789,
                  "nodeType": "Return",
                  "src": "7164:34:30"
                }
              ]
            },
            "documentation": null,
            "id": 9791,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approveDigest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9782,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 9791,
                  "src": "7130:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9781,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7130:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7129:17:30"
            },
            "returnParameters": {
              "id": 9784,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7154:0:30"
            },
            "scope": 9852,
            "src": "7107:98:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9803,
              "nodeType": "Block",
              "src": "7295:65:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9800,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9793,
                        "src": "7345:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9798,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7312:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9799,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "wasDigestApprovedForSigning",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4535,
                      "src": "7312:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 9801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7312:41:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9797,
                  "id": 9802,
                  "nodeType": "Return",
                  "src": "7305:48:30"
                }
              ]
            },
            "documentation": null,
            "id": 9804,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "wasDigestApprovedForSigning",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9793,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 9804,
                  "src": "7248:15:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9792,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7248:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7247:17:30"
            },
            "returnParameters": {
              "id": 9797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9796,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9804,
                  "src": "7286:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9795,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7286:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7285:9:30"
            },
            "scope": 9852,
            "src": "7211:149:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9819,
              "nodeType": "Block",
              "src": "7514:89:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9815,
                        "name": "_txInputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9806,
                        "src": "7564:14:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9816,
                        "name": "_txOutputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9808,
                        "src": "7580:15:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9813,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7531:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9814,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redemptionTransactionChecks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3202,
                      "src": "7531:32:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes memory,bytes memory) view returns (uint256)"
                      }
                    },
                    "id": 9817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7531:65:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9812,
                  "id": 9818,
                  "nodeType": "Return",
                  "src": "7524:72:30"
                }
              ]
            },
            "documentation": null,
            "id": 9820,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redemptionTransactionChecks",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9806,
                  "name": "_txInputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "7412:27:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9805,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7412:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9808,
                  "name": "_txOutputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "7449:28:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9807,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7449:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7402:81:30"
            },
            "returnParameters": {
              "id": 9812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9811,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9820,
                  "src": "7505:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7505:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7504:9:30"
            },
            "scope": 9852,
            "src": "7366:237:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9828,
              "nodeType": "Block",
              "src": "7674:50:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 9825,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "7691:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                        "typeString": "struct DepositUtils.Deposit storage ref"
                      }
                    },
                    "id": 9826,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "withdrawalRequestTime",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3876,
                    "src": "7691:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9824,
                  "id": 9827,
                  "nodeType": "Return",
                  "src": "7684:33:30"
                }
              ]
            },
            "documentation": null,
            "id": 9829,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWithdrawalRequestTime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9821,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7642:2:30"
            },
            "returnParameters": {
              "id": 9824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9823,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9829,
                  "src": "7666:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9822,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7666:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7665:9:30"
            },
            "scope": 9852,
            "src": "7609:115:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9840,
              "nodeType": "Block",
              "src": "7786:53:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9837,
                        "name": "_ethValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9831,
                        "src": "7822:9:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9834,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7796:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9836,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pushFundsToKeepGroup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4882,
                      "src": "7796:25:30",
                      "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": 9838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7796:36:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9839,
                  "nodeType": "ExpressionStatement",
                  "src": "7796:36:30"
                }
              ]
            },
            "documentation": null,
            "id": 9841,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pushFundsToKeepGroup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9831,
                  "name": "_ethValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 9841,
                  "src": "7760:17:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7760:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7759:19:30"
            },
            "returnParameters": {
              "id": 9833,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7786:0:30"
            },
            "scope": 9852,
            "src": "7730:109:30",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9850,
              "nodeType": "Block",
              "src": "7911:55:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9846,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "7928:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9847,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAuctionBasePercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4652,
                      "src": "7928:29:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_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": 9848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7928:31:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9845,
                  "id": 9849,
                  "nodeType": "Return",
                  "src": "7921:38:30"
                }
              ]
            },
            "documentation": null,
            "id": 9851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAuctionBasePercentage",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9842,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7878:2:30"
            },
            "returnParameters": {
              "id": 9845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9844,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9851,
                  "src": "7902:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7902:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7901:9:30"
            },
            "scope": 9852,
            "src": "7845:121:30",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 9853,
        "src": "352:7616:30"
      }
    ],
    "src": "0:7969:30"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol",
      "exportedSymbols": {
        "TestDeposit": [
          9852
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 9152,
        "name": "PragmaDirective",
        "src": "0:23:30"
      },
      {
        "attributes": {
          "SourceUnit": 1135,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol",
          "file": "../../../contracts/deposit/Deposit.sol",
          "scope": 9853,
          "symbolAliases": [
            {
              "foreign": 9153,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9154,
        "name": "ImportDirective",
        "src": "25:63:30"
      },
      {
        "attributes": {
          "SourceUnit": 5512,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol",
          "file": "../../interfaces/ITBTCSystem.sol",
          "scope": 9853,
          "symbolAliases": [
            {
              "foreign": 9155,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9156,
        "name": "ImportDirective",
        "src": "89:61:30"
      },
      {
        "attributes": {
          "SourceUnit": 18288,
          "absolutePath": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol",
          "file": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol",
          "scope": 9853,
          "symbolAliases": [
            {
              "foreign": 9157,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9158,
        "name": "ImportDirective",
        "src": "151:81:30"
      },
      {
        "attributes": {
          "SourceUnit": 8562,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
          "file": "../../system/TBTCToken.sol",
          "scope": 9853,
          "symbolAliases": [
            {
              "foreign": 9159,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9160,
        "name": "ImportDirective",
        "src": "233:53:30"
      },
      {
        "attributes": {
          "SourceUnit": 6301,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol",
          "file": "../../system/FeeRebateToken.sol",
          "scope": 9853,
          "symbolAliases": [
            {
              "foreign": 9161,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9162,
        "name": "ImportDirective",
        "src": "287:63:30"
      },
      {
        "attributes": {
          "contractDependencies": [
            1134,
            6251
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            9852,
            1134,
            6251
          ],
          "name": "TestDeposit",
          "scope": 9853
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Deposit",
                  "referencedDeclaration": 1134,
                  "type": "contract Deposit"
                },
                "id": 9163,
                "name": "UserDefinedTypeName",
                "src": "376:7:30"
              }
            ],
            "id": 9164,
            "name": "InheritanceSpecifier",
            "src": "376:7:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9165,
                "name": "ParameterList",
                "src": "402:2:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9166,
                "name": "ParameterList",
                "src": "412:0:30"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 9167,
                "name": "Block",
                "src": "412:59:30"
              }
            ],
            "id": 9168,
            "name": "FunctionDefinition",
            "src": "391:80:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "initializeDeposit",
              "scope": 9852,
              "stateMutability": "payable",
              "superFunction": 1097,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcSystem",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ITBTCSystem",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ITBTCSystem",
                          "referencedDeclaration": 5511,
                          "type": "contract ITBTCSystem"
                        },
                        "id": 9169,
                        "name": "UserDefinedTypeName",
                        "src": "513:11:30"
                      }
                    ],
                    "id": 9170,
                    "name": "VariableDeclaration",
                    "src": "513:23:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcToken",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract TBTCToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "TBTCToken",
                          "referencedDeclaration": 8561,
                          "type": "contract TBTCToken"
                        },
                        "id": 9171,
                        "name": "UserDefinedTypeName",
                        "src": "546:9:30"
                      }
                    ],
                    "id": 9172,
                    "name": "VariableDeclaration",
                    "src": "546:20:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcDepositToken",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC721",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IERC721",
                          "referencedDeclaration": 18287,
                          "type": "contract IERC721"
                        },
                        "id": 9173,
                        "name": "UserDefinedTypeName",
                        "src": "576:7:30"
                      }
                    ],
                    "id": 9174,
                    "name": "VariableDeclaration",
                    "src": "576:25:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_feeRebateToken",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract FeeRebateToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "FeeRebateToken",
                          "referencedDeclaration": 6300,
                          "type": "contract FeeRebateToken"
                        },
                        "id": 9175,
                        "name": "UserDefinedTypeName",
                        "src": "611:14:30"
                      }
                    ],
                    "id": 9176,
                    "name": "VariableDeclaration",
                    "src": "611:30:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vendingMachineAddress",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9177,
                        "name": "ElementaryTypeName",
                        "src": "651:7:30"
                      }
                    ],
                    "id": 9178,
                    "name": "VariableDeclaration",
                    "src": "651:30:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_lotSizeSatoshis",
                      "scope": 9220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 9179,
                        "name": "ElementaryTypeName",
                        "src": "691:6:30"
                      }
                    ],
                    "id": 9180,
                    "name": "VariableDeclaration",
                    "src": "691:23:30"
                  }
                ],
                "id": 9181,
                "name": "ParameterList",
                "src": "503:217:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9182,
                "name": "ParameterList",
                "src": "736:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ITBTCSystem"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcSystem",
                              "referencedDeclaration": 3828,
                              "type": "contract ITBTCSystem"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9183,
                                "name": "Identifier",
                                "src": "746:4:30"
                              }
                            ],
                            "id": 9185,
                            "name": "MemberAccess",
                            "src": "746:15:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9170,
                              "type": "contract ITBTCSystem",
                              "value": "_tbtcSystem"
                            },
                            "id": 9186,
                            "name": "Identifier",
                            "src": "764:11:30"
                          }
                        ],
                        "id": 9187,
                        "name": "Assignment",
                        "src": "746:29:30"
                      }
                    ],
                    "id": 9188,
                    "name": "ExpressionStatement",
                    "src": "746:29:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract TBTCToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcToken",
                              "referencedDeclaration": 3830,
                              "type": "contract TBTCToken"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9189,
                                "name": "Identifier",
                                "src": "785:4:30"
                              }
                            ],
                            "id": 9191,
                            "name": "MemberAccess",
                            "src": "785:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9172,
                              "type": "contract TBTCToken",
                              "value": "_tbtcToken"
                            },
                            "id": 9192,
                            "name": "Identifier",
                            "src": "802:10:30"
                          }
                        ],
                        "id": 9193,
                        "name": "Assignment",
                        "src": "785:27:30"
                      }
                    ],
                    "id": 9194,
                    "name": "ExpressionStatement",
                    "src": "785:27:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IERC721"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcDepositToken",
                              "referencedDeclaration": 3832,
                              "type": "contract IERC721"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9195,
                                "name": "Identifier",
                                "src": "822:4:30"
                              }
                            ],
                            "id": 9197,
                            "name": "MemberAccess",
                            "src": "822:21:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9174,
                              "type": "contract IERC721",
                              "value": "_tbtcDepositToken"
                            },
                            "id": 9198,
                            "name": "Identifier",
                            "src": "846:17:30"
                          }
                        ],
                        "id": 9199,
                        "name": "Assignment",
                        "src": "822:41:30"
                      }
                    ],
                    "id": 9200,
                    "name": "ExpressionStatement",
                    "src": "822:41:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract FeeRebateToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "feeRebateToken",
                              "referencedDeclaration": 3834,
                              "type": "contract FeeRebateToken"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9201,
                                "name": "Identifier",
                                "src": "873:4:30"
                              }
                            ],
                            "id": 9203,
                            "name": "MemberAccess",
                            "src": "873:19:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9176,
                              "type": "contract FeeRebateToken",
                              "value": "_feeRebateToken"
                            },
                            "id": 9204,
                            "name": "Identifier",
                            "src": "895:15:30"
                          }
                        ],
                        "id": 9205,
                        "name": "Assignment",
                        "src": "873:37:30"
                      }
                    ],
                    "id": 9206,
                    "name": "ExpressionStatement",
                    "src": "873:37:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "vendingMachineAddress",
                              "referencedDeclaration": 3836,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9207,
                                "name": "Identifier",
                                "src": "920:4:30"
                              }
                            ],
                            "id": 9209,
                            "name": "MemberAccess",
                            "src": "920:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9178,
                              "type": "address",
                              "value": "_vendingMachineAddress"
                            },
                            "id": 9210,
                            "name": "Identifier",
                            "src": "949:22:30"
                          }
                        ],
                        "id": 9211,
                        "name": "Assignment",
                        "src": "920:51:30"
                      }
                    ],
                    "id": 9212,
                    "name": "ExpressionStatement",
                    "src": "920:51:30"
                  },
                  {
                    "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_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 1360,
                              "type": "function (struct DepositUtils.Deposit storage pointer,uint64)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9213,
                                "name": "Identifier",
                                "src": "981:4:30"
                              }
                            ],
                            "id": 9215,
                            "name": "MemberAccess",
                            "src": "981:15:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9180,
                              "type": "uint64",
                              "value": "_lotSizeSatoshis"
                            },
                            "id": 9216,
                            "name": "Identifier",
                            "src": "997:16:30"
                          }
                        ],
                        "id": 9217,
                        "name": "FunctionCall",
                        "src": "981:33:30"
                      }
                    ],
                    "id": 9218,
                    "name": "ExpressionStatement",
                    "src": "981:33:30"
                  }
                ],
                "id": 9219,
                "name": "Block",
                "src": "736:285:30"
              }
            ],
            "id": 9220,
            "name": "FunctionDefinition",
            "src": "477:544:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setExteriorAddresses",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_sys",
                      "scope": 9272,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9221,
                        "name": "ElementaryTypeName",
                        "src": "1066:7:30"
                      }
                    ],
                    "id": 9222,
                    "name": "VariableDeclaration",
                    "src": "1066:12:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_token",
                      "scope": 9272,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9223,
                        "name": "ElementaryTypeName",
                        "src": "1088:7:30"
                      }
                    ],
                    "id": 9224,
                    "name": "VariableDeclaration",
                    "src": "1088:14:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcDepositToken",
                      "scope": 9272,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9225,
                        "name": "ElementaryTypeName",
                        "src": "1112:7:30"
                      }
                    ],
                    "id": 9226,
                    "name": "VariableDeclaration",
                    "src": "1112:25:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_feeRebateToken",
                      "scope": 9272,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9227,
                        "name": "ElementaryTypeName",
                        "src": "1147:7:30"
                      }
                    ],
                    "id": 9228,
                    "name": "VariableDeclaration",
                    "src": "1147:23:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vendingMachineAddress",
                      "scope": 9272,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9229,
                        "name": "ElementaryTypeName",
                        "src": "1180:7:30"
                      }
                    ],
                    "id": 9230,
                    "name": "VariableDeclaration",
                    "src": "1180:30:30"
                  }
                ],
                "id": 9231,
                "name": "ParameterList",
                "src": "1056:160:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9232,
                "name": "ParameterList",
                "src": "1224:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ITBTCSystem"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcSystem",
                              "referencedDeclaration": 3828,
                              "type": "contract ITBTCSystem"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9233,
                                "name": "Identifier",
                                "src": "1234:4:30"
                              }
                            ],
                            "id": 9235,
                            "name": "MemberAccess",
                            "src": "1234:15:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract ITBTCSystem",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5511,
                                  "type": "type(contract ITBTCSystem)",
                                  "value": "ITBTCSystem"
                                },
                                "id": 9236,
                                "name": "Identifier",
                                "src": "1252:11:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9222,
                                  "type": "address",
                                  "value": "_sys"
                                },
                                "id": 9237,
                                "name": "Identifier",
                                "src": "1264:4:30"
                              }
                            ],
                            "id": 9238,
                            "name": "FunctionCall",
                            "src": "1252:17:30"
                          }
                        ],
                        "id": 9239,
                        "name": "Assignment",
                        "src": "1234:35:30"
                      }
                    ],
                    "id": 9240,
                    "name": "ExpressionStatement",
                    "src": "1234:35:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract TBTCToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcToken",
                              "referencedDeclaration": 3830,
                              "type": "contract TBTCToken"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9241,
                                "name": "Identifier",
                                "src": "1279:4:30"
                              }
                            ],
                            "id": 9243,
                            "name": "MemberAccess",
                            "src": "1279:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract TBTCToken",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8561,
                                  "type": "type(contract TBTCToken)",
                                  "value": "TBTCToken"
                                },
                                "id": 9244,
                                "name": "Identifier",
                                "src": "1296:9:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9224,
                                  "type": "address",
                                  "value": "_token"
                                },
                                "id": 9245,
                                "name": "Identifier",
                                "src": "1306:6:30"
                              }
                            ],
                            "id": 9246,
                            "name": "FunctionCall",
                            "src": "1296:17:30"
                          }
                        ],
                        "id": 9247,
                        "name": "Assignment",
                        "src": "1279:34:30"
                      }
                    ],
                    "id": 9248,
                    "name": "ExpressionStatement",
                    "src": "1279:34:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IERC721"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tbtcDepositToken",
                              "referencedDeclaration": 3832,
                              "type": "contract IERC721"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9249,
                                "name": "Identifier",
                                "src": "1323:4:30"
                              }
                            ],
                            "id": 9251,
                            "name": "MemberAccess",
                            "src": "1323:21:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IERC721",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18287,
                                  "type": "type(contract IERC721)",
                                  "value": "IERC721"
                                },
                                "id": 9252,
                                "name": "Identifier",
                                "src": "1347:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9226,
                                  "type": "address",
                                  "value": "_tbtcDepositToken"
                                },
                                "id": 9253,
                                "name": "Identifier",
                                "src": "1355:17:30"
                              }
                            ],
                            "id": 9254,
                            "name": "FunctionCall",
                            "src": "1347:26:30"
                          }
                        ],
                        "id": 9255,
                        "name": "Assignment",
                        "src": "1323:50:30"
                      }
                    ],
                    "id": 9256,
                    "name": "ExpressionStatement",
                    "src": "1323:50:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract FeeRebateToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "feeRebateToken",
                              "referencedDeclaration": 3834,
                              "type": "contract FeeRebateToken"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9257,
                                "name": "Identifier",
                                "src": "1383:4:30"
                              }
                            ],
                            "id": 9259,
                            "name": "MemberAccess",
                            "src": "1383:19:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract FeeRebateToken",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6300,
                                  "type": "type(contract FeeRebateToken)",
                                  "value": "FeeRebateToken"
                                },
                                "id": 9260,
                                "name": "Identifier",
                                "src": "1405:14:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9228,
                                  "type": "address",
                                  "value": "_feeRebateToken"
                                },
                                "id": 9261,
                                "name": "Identifier",
                                "src": "1420:15:30"
                              }
                            ],
                            "id": 9262,
                            "name": "FunctionCall",
                            "src": "1405:31:30"
                          }
                        ],
                        "id": 9263,
                        "name": "Assignment",
                        "src": "1383:53:30"
                      }
                    ],
                    "id": 9264,
                    "name": "ExpressionStatement",
                    "src": "1383:53:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "vendingMachineAddress",
                              "referencedDeclaration": 3836,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9265,
                                "name": "Identifier",
                                "src": "1446:4:30"
                              }
                            ],
                            "id": 9267,
                            "name": "MemberAccess",
                            "src": "1446:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9230,
                              "type": "address",
                              "value": "_vendingMachineAddress"
                            },
                            "id": 9268,
                            "name": "Identifier",
                            "src": "1475:22:30"
                          }
                        ],
                        "id": 9269,
                        "name": "Assignment",
                        "src": "1446:51:30"
                      }
                    ],
                    "id": 9270,
                    "name": "ExpressionStatement",
                    "src": "1446:51:30"
                  }
                ],
                "id": 9271,
                "name": "Block",
                "src": "1224:280:30"
              }
            ],
            "id": 9272,
            "name": "FunctionDefinition",
            "src": "1027:477:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "reset",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9273,
                "name": "ParameterList",
                "src": "1524:2:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9274,
                "name": "ParameterList",
                "src": "1534:0:30"
              },
              {
                "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9340,
                              "type": "function (uint8)",
                              "value": "setState"
                            },
                            "id": 9275,
                            "name": "Identifier",
                            "src": "1544:8:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9276,
                            "name": "Literal",
                            "src": "1553:1:30"
                          }
                        ],
                        "id": 9277,
                        "name": "FunctionCall",
                        "src": "1544:11:30"
                      }
                    ],
                    "id": 9278,
                    "name": "ExpressionStatement",
                    "src": "1544:11:30"
                  },
                  {
                    "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9450,
                              "type": "function (uint256,uint256)",
                              "value": "setLiquidationAndCourtesyInitated"
                            },
                            "id": 9279,
                            "name": "Identifier",
                            "src": "1565:33:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9280,
                            "name": "Literal",
                            "src": "1599:1:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9281,
                            "name": "Literal",
                            "src": "1602:1:30"
                          }
                        ],
                        "id": 9282,
                        "name": "FunctionCall",
                        "src": "1565:39:30"
                      }
                    ],
                    "id": 9283,
                    "name": "ExpressionStatement",
                    "src": "1565:39:30"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9638,
                              "type": "function (address payable,bytes memory,uint256,uint256,bytes32)",
                              "value": "setRequestInfo"
                            },
                            "id": 9284,
                            "name": "Identifier",
                            "src": "1614:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 9285,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1629:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9286,
                                "name": "Literal",
                                "src": "1637:1:30"
                              }
                            ],
                            "id": 9287,
                            "name": "FunctionCall",
                            "src": "1629:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"\"",
                              "value": ""
                            },
                            "id": 9288,
                            "name": "Literal",
                            "src": "1641:2:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9289,
                            "name": "Literal",
                            "src": "1645:1:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9290,
                            "name": "Literal",
                            "src": "1648:1:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)",
                                  "value": "bytes32"
                                },
                                "id": 9291,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1651:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9292,
                                "name": "Literal",
                                "src": "1659:1:30"
                              }
                            ],
                            "id": 9293,
                            "name": "FunctionCall",
                            "src": "1651:10:30"
                          }
                        ],
                        "id": 9294,
                        "name": "FunctionCall",
                        "src": "1614:48:30"
                      }
                    ],
                    "id": 9295,
                    "name": "ExpressionStatement",
                    "src": "1614:48:30"
                  },
                  {
                    "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_bytes8",
                                  "typeString": "bytes8"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9725,
                              "type": "function (bytes8,uint256,bytes memory)",
                              "value": "setFundingInfo"
                            },
                            "id": 9296,
                            "name": "Identifier",
                            "src": "1672:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes8)",
                                  "value": "bytes8"
                                },
                                "id": 9297,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1687:6:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9298,
                                "name": "Literal",
                                "src": "1694:1:30"
                              }
                            ],
                            "id": 9299,
                            "name": "FunctionCall",
                            "src": "1687:9:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9300,
                            "name": "Literal",
                            "src": "1698:1:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"\"",
                              "value": ""
                            },
                            "id": 9301,
                            "name": "Literal",
                            "src": "1701:2:30"
                          }
                        ],
                        "id": 9302,
                        "name": "FunctionCall",
                        "src": "1672:32:30"
                      }
                    ],
                    "id": 9303,
                    "name": "ExpressionStatement",
                    "src": "1672:32:30"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9506,
                              "type": "function (address)",
                              "value": "setKeepAddress"
                            },
                            "id": 9304,
                            "name": "Identifier",
                            "src": "1715:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 9305,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1730:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9306,
                                "name": "Literal",
                                "src": "1738:1:30"
                              }
                            ],
                            "id": 9307,
                            "name": "FunctionCall",
                            "src": "1730:10:30"
                          }
                        ],
                        "id": 9308,
                        "name": "FunctionCall",
                        "src": "1715:26:30"
                      }
                    ],
                    "id": 9309,
                    "name": "ExpressionStatement",
                    "src": "1715:26:30"
                  },
                  {
                    "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9530,
                              "type": "function (uint256)",
                              "value": "setSigningGroupRequestedAt"
                            },
                            "id": 9310,
                            "name": "Identifier",
                            "src": "1751:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9311,
                            "name": "Literal",
                            "src": "1778:1:30"
                          }
                        ],
                        "id": 9312,
                        "name": "FunctionCall",
                        "src": "1751:29:30"
                      }
                    ],
                    "id": 9313,
                    "name": "ExpressionStatement",
                    "src": "1751:29:30"
                  },
                  {
                    "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9551,
                              "type": "function (uint256)",
                              "value": "setFundingProofTimerStart"
                            },
                            "id": 9314,
                            "name": "Identifier",
                            "src": "1790:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9315,
                            "name": "Literal",
                            "src": "1816:1:30"
                          }
                        ],
                        "id": 9316,
                        "name": "FunctionCall",
                        "src": "1790:28:30"
                      }
                    ],
                    "id": 9317,
                    "name": "ExpressionStatement",
                    "src": "1790:28:30"
                  },
                  {
                    "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_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9580,
                              "type": "function (bytes32,bytes32)",
                              "value": "setSigningGroupPublicKey"
                            },
                            "id": 9318,
                            "name": "Identifier",
                            "src": "1828:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)",
                                  "value": "bytes32"
                                },
                                "id": 9319,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1853:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9320,
                                "name": "Literal",
                                "src": "1861:1:30"
                              }
                            ],
                            "id": 9321,
                            "name": "FunctionCall",
                            "src": "1853:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)",
                                  "value": "bytes32"
                                },
                                "id": 9322,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1865:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 9323,
                                "name": "Literal",
                                "src": "1873:1:30"
                              }
                            ],
                            "id": 9324,
                            "name": "FunctionCall",
                            "src": "1865:10:30"
                          }
                        ],
                        "id": 9325,
                        "name": "FunctionCall",
                        "src": "1828:48:30"
                      }
                    ],
                    "id": 9326,
                    "name": "ExpressionStatement",
                    "src": "1828:48:30"
                  }
                ],
                "id": 9327,
                "name": "Block",
                "src": "1534:349:30"
              }
            ],
            "id": 9328,
            "name": "FunctionDefinition",
            "src": "1510:373:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setState",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_state",
                      "scope": 9340,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 9329,
                        "name": "ElementaryTypeName",
                        "src": "1907:5:30"
                      }
                    ],
                    "id": 9330,
                    "name": "VariableDeclaration",
                    "src": "1907:12:30"
                  }
                ],
                "id": 9331,
                "name": "ParameterList",
                "src": "1906:14:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9332,
                "name": "ParameterList",
                "src": "1928:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9333,
                                "name": "Identifier",
                                "src": "1938:4:30"
                              }
                            ],
                            "id": 9335,
                            "name": "MemberAccess",
                            "src": "1938:17:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9330,
                              "type": "uint8",
                              "value": "_state"
                            },
                            "id": 9336,
                            "name": "Identifier",
                            "src": "1958:6:30"
                          }
                        ],
                        "id": 9337,
                        "name": "Assignment",
                        "src": "1938:26:30"
                      }
                    ],
                    "id": 9338,
                    "name": "ExpressionStatement",
                    "src": "1938:26:30"
                  }
                ],
                "id": 9339,
                "name": "Block",
                "src": "1928:43:30"
              }
            ],
            "id": 9340,
            "name": "FunctionDefinition",
            "src": "1889:82:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getState",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9341,
                "name": "ParameterList",
                "src": "1994:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9349,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 9342,
                        "name": "ElementaryTypeName",
                        "src": "2018:5:30"
                      }
                    ],
                    "id": 9343,
                    "name": "VariableDeclaration",
                    "src": "2018:5:30"
                  }
                ],
                "id": 9344,
                "name": "ParameterList",
                "src": "2017:7:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9344
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "currentState",
                          "referencedDeclaration": 3840,
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9345,
                            "name": "Identifier",
                            "src": "2034:4:30"
                          }
                        ],
                        "id": 9346,
                        "name": "MemberAccess",
                        "src": "2034:17:30"
                      }
                    ],
                    "id": 9347,
                    "name": "Return",
                    "src": "2027:24:30"
                  }
                ],
                "id": 9348,
                "name": "Block",
                "src": "2025:29:30"
              }
            ],
            "id": 9349,
            "name": "FunctionDefinition",
            "src": "1977:77:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setSignerFeeDivisor",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signerFeeDivisor",
                      "scope": 9361,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 9350,
                        "name": "ElementaryTypeName",
                        "src": "2089:6:30"
                      }
                    ],
                    "id": 9351,
                    "name": "VariableDeclaration",
                    "src": "2089:24:30"
                  }
                ],
                "id": 9352,
                "name": "ParameterList",
                "src": "2088:26:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9353,
                "name": "ParameterList",
                "src": "2122:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signerFeeDivisor",
                              "referencedDeclaration": 3842,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9354,
                                "name": "Identifier",
                                "src": "2132:4:30"
                              }
                            ],
                            "id": 9356,
                            "name": "MemberAccess",
                            "src": "2132:21:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9351,
                              "type": "uint16",
                              "value": "_signerFeeDivisor"
                            },
                            "id": 9357,
                            "name": "Identifier",
                            "src": "2156:17:30"
                          }
                        ],
                        "id": 9358,
                        "name": "Assignment",
                        "src": "2132:41:30"
                      }
                    ],
                    "id": 9359,
                    "name": "ExpressionStatement",
                    "src": "2132:41:30"
                  }
                ],
                "id": 9360,
                "name": "Block",
                "src": "2122:58:30"
              }
            ],
            "id": 9361,
            "name": "FunctionDefinition",
            "src": "2060:120:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setKeepSetupFee",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fee",
                      "scope": 9373,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9362,
                        "name": "ElementaryTypeName",
                        "src": "2211:7:30"
                      }
                    ],
                    "id": 9363,
                    "name": "VariableDeclaration",
                    "src": "2211:12:30"
                  }
                ],
                "id": 9364,
                "name": "ParameterList",
                "src": "2210:14:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9365,
                "name": "ParameterList",
                "src": "2232:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keepSetupFee",
                              "referencedDeclaration": 3850,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9366,
                                "name": "Identifier",
                                "src": "2242:4:30"
                              }
                            ],
                            "id": 9368,
                            "name": "MemberAccess",
                            "src": "2242:17:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9363,
                              "type": "uint256",
                              "value": "_fee"
                            },
                            "id": 9369,
                            "name": "Identifier",
                            "src": "2262:4:30"
                          }
                        ],
                        "id": 9370,
                        "name": "Assignment",
                        "src": "2242:24:30"
                      }
                    ],
                    "id": 9371,
                    "name": "ExpressionStatement",
                    "src": "2242:24:30"
                  }
                ],
                "id": 9372,
                "name": "Block",
                "src": "2232:41:30"
              }
            ],
            "id": 9373,
            "name": "FunctionDefinition",
            "src": "2186:87:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getSignerFeeDivisor",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9374,
                "name": "ParameterList",
                "src": "2307:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9382,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9375,
                        "name": "ElementaryTypeName",
                        "src": "2331:7:30"
                      }
                    ],
                    "id": 9376,
                    "name": "VariableDeclaration",
                    "src": "2331:7:30"
                  }
                ],
                "id": 9377,
                "name": "ParameterList",
                "src": "2330:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9377
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "signerFeeDivisor",
                          "referencedDeclaration": 3842,
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9378,
                            "name": "Identifier",
                            "src": "2349:4:30"
                          }
                        ],
                        "id": 9379,
                        "name": "MemberAccess",
                        "src": "2349:21:30"
                      }
                    ],
                    "id": 9380,
                    "name": "Return",
                    "src": "2342:28:30"
                  }
                ],
                "id": 9381,
                "name": "Block",
                "src": "2340:33:30"
              }
            ],
            "id": 9382,
            "name": "FunctionDefinition",
            "src": "2279:94:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLotSize",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_lotSizeSatoshis",
                      "scope": 9394,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 9383,
                        "name": "ElementaryTypeName",
                        "src": "2399:6:30"
                      }
                    ],
                    "id": 9384,
                    "name": "VariableDeclaration",
                    "src": "2399:23:30"
                  }
                ],
                "id": 9385,
                "name": "ParameterList",
                "src": "2398:25:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9386,
                "name": "ParameterList",
                "src": "2431:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "lotSizeSatoshis",
                              "referencedDeclaration": 3838,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9387,
                                "name": "Identifier",
                                "src": "2441:4:30"
                              }
                            ],
                            "id": 9389,
                            "name": "MemberAccess",
                            "src": "2441:20:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9384,
                              "type": "uint64",
                              "value": "_lotSizeSatoshis"
                            },
                            "id": 9390,
                            "name": "Identifier",
                            "src": "2464:16:30"
                          }
                        ],
                        "id": 9391,
                        "name": "Assignment",
                        "src": "2441:39:30"
                      }
                    ],
                    "id": 9392,
                    "name": "ExpressionStatement",
                    "src": "2441:39:30"
                  }
                ],
                "id": 9393,
                "name": "Block",
                "src": "2431:56:30"
              }
            ],
            "id": 9394,
            "name": "FunctionDefinition",
            "src": "2379:108:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setUndercollateralizedThresholdPercent",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_undercollateralizedThresholdPercent",
                      "scope": 9406,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 9395,
                        "name": "ElementaryTypeName",
                        "src": "2541:6:30"
                      }
                    ],
                    "id": 9396,
                    "name": "VariableDeclaration",
                    "src": "2541:43:30"
                  }
                ],
                "id": 9397,
                "name": "ParameterList",
                "src": "2540:45:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9398,
                "name": "ParameterList",
                "src": "2593:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "undercollateralizedThresholdPercent",
                              "referencedDeclaration": 3846,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9399,
                                "name": "Identifier",
                                "src": "2603:4:30"
                              }
                            ],
                            "id": 9401,
                            "name": "MemberAccess",
                            "src": "2603:40:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9396,
                              "type": "uint16",
                              "value": "_undercollateralizedThresholdPercent"
                            },
                            "id": 9402,
                            "name": "Identifier",
                            "src": "2646:36:30"
                          }
                        ],
                        "id": 9403,
                        "name": "Assignment",
                        "src": "2603:79:30"
                      }
                    ],
                    "id": 9404,
                    "name": "ExpressionStatement",
                    "src": "2603:79:30"
                  }
                ],
                "id": 9405,
                "name": "Block",
                "src": "2593:96:30"
              }
            ],
            "id": 9406,
            "name": "FunctionDefinition",
            "src": "2493:196:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setInitialCollateralizedPercent",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initialCollateralizedPercent",
                      "scope": 9418,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 9407,
                        "name": "ElementaryTypeName",
                        "src": "2736:6:30"
                      }
                    ],
                    "id": 9408,
                    "name": "VariableDeclaration",
                    "src": "2736:36:30"
                  }
                ],
                "id": 9409,
                "name": "ParameterList",
                "src": "2735:38:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9410,
                "name": "ParameterList",
                "src": "2781:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "initialCollateralizedPercent",
                              "referencedDeclaration": 3844,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9411,
                                "name": "Identifier",
                                "src": "2791:4:30"
                              }
                            ],
                            "id": 9413,
                            "name": "MemberAccess",
                            "src": "2791:33:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9408,
                              "type": "uint16",
                              "value": "_initialCollateralizedPercent"
                            },
                            "id": 9414,
                            "name": "Identifier",
                            "src": "2827:29:30"
                          }
                        ],
                        "id": 9415,
                        "name": "Assignment",
                        "src": "2791:65:30"
                      }
                    ],
                    "id": 9416,
                    "name": "ExpressionStatement",
                    "src": "2791:65:30"
                  }
                ],
                "id": 9417,
                "name": "Block",
                "src": "2781:82:30"
              }
            ],
            "id": 9418,
            "name": "FunctionDefinition",
            "src": "2695:168:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setSeverelyUndercollateralizedThresholdPercent",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_severelyUndercollateralizedThresholdPercent",
                      "scope": 9430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 9419,
                        "name": "ElementaryTypeName",
                        "src": "2925:6:30"
                      }
                    ],
                    "id": 9420,
                    "name": "VariableDeclaration",
                    "src": "2925:51:30"
                  }
                ],
                "id": 9421,
                "name": "ParameterList",
                "src": "2924:53:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9422,
                "name": "ParameterList",
                "src": "2985:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "severelyUndercollateralizedThresholdPercent",
                              "referencedDeclaration": 3848,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9423,
                                "name": "Identifier",
                                "src": "2995:4:30"
                              }
                            ],
                            "id": 9425,
                            "name": "MemberAccess",
                            "src": "2995:48:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9420,
                              "type": "uint16",
                              "value": "_severelyUndercollateralizedThresholdPercent"
                            },
                            "id": 9426,
                            "name": "Identifier",
                            "src": "3046:44:30"
                          }
                        ],
                        "id": 9427,
                        "name": "Assignment",
                        "src": "2995:95:30"
                      }
                    ],
                    "id": 9428,
                    "name": "ExpressionStatement",
                    "src": "2995:95:30"
                  }
                ],
                "id": 9429,
                "name": "Block",
                "src": "2985:112:30"
              }
            ],
            "id": 9430,
            "name": "FunctionDefinition",
            "src": "2869:228:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLiquidationAndCourtesyInitated",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_liquidation",
                      "scope": 9450,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9431,
                        "name": "ElementaryTypeName",
                        "src": "3155:7:30"
                      }
                    ],
                    "id": 9432,
                    "name": "VariableDeclaration",
                    "src": "3155:20:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_courtesy",
                      "scope": 9450,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9433,
                        "name": "ElementaryTypeName",
                        "src": "3185:7:30"
                      }
                    ],
                    "id": 9434,
                    "name": "VariableDeclaration",
                    "src": "3185:17:30"
                  }
                ],
                "id": 9435,
                "name": "ParameterList",
                "src": "3145:63:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9436,
                "name": "ParameterList",
                "src": "3216:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "liquidationInitiated",
                              "referencedDeclaration": 3852,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9437,
                                "name": "Identifier",
                                "src": "3226:4:30"
                              }
                            ],
                            "id": 9439,
                            "name": "MemberAccess",
                            "src": "3226:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9432,
                              "type": "uint256",
                              "value": "_liquidation"
                            },
                            "id": 9440,
                            "name": "Identifier",
                            "src": "3254:12:30"
                          }
                        ],
                        "id": 9441,
                        "name": "Assignment",
                        "src": "3226:40:30"
                      }
                    ],
                    "id": 9442,
                    "name": "ExpressionStatement",
                    "src": "3226:40:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "courtesyCallInitiated",
                              "referencedDeclaration": 3854,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9443,
                                "name": "Identifier",
                                "src": "3276:4:30"
                              }
                            ],
                            "id": 9445,
                            "name": "MemberAccess",
                            "src": "3276:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9434,
                              "type": "uint256",
                              "value": "_courtesy"
                            },
                            "id": 9446,
                            "name": "Identifier",
                            "src": "3305:9:30"
                          }
                        ],
                        "id": 9447,
                        "name": "Assignment",
                        "src": "3276:38:30"
                      }
                    ],
                    "id": 9448,
                    "name": "ExpressionStatement",
                    "src": "3276:38:30"
                  }
                ],
                "id": 9449,
                "name": "Block",
                "src": "3216:105:30"
              }
            ],
            "id": 9450,
            "name": "FunctionDefinition",
            "src": "3103:218:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLiquidationInitiator",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initiator",
                      "scope": 9462,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 9451,
                        "name": "ElementaryTypeName",
                        "src": "3360:15:30"
                      }
                    ],
                    "id": 9452,
                    "name": "VariableDeclaration",
                    "src": "3360:26:30"
                  }
                ],
                "id": 9453,
                "name": "ParameterList",
                "src": "3359:28:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9454,
                "name": "ParameterList",
                "src": "3395:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "liquidationInitiator",
                              "referencedDeclaration": 3856,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9455,
                                "name": "Identifier",
                                "src": "3405:4:30"
                              }
                            ],
                            "id": 9457,
                            "name": "MemberAccess",
                            "src": "3405:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9452,
                              "type": "address payable",
                              "value": "_initiator"
                            },
                            "id": 9458,
                            "name": "Identifier",
                            "src": "3433:10:30"
                          }
                        ],
                        "id": 9459,
                        "name": "Assignment",
                        "src": "3405:38:30"
                      }
                    ],
                    "id": 9460,
                    "name": "ExpressionStatement",
                    "src": "3405:38:30"
                  }
                ],
                "id": 9461,
                "name": "Block",
                "src": "3395:55:30"
              }
            ],
            "id": 9462,
            "name": "FunctionDefinition",
            "src": "3327:123:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getLiquidationInitiator",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9463,
                "name": "ParameterList",
                "src": "3488:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9471,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9464,
                        "name": "ElementaryTypeName",
                        "src": "3512:7:30"
                      }
                    ],
                    "id": 9465,
                    "name": "VariableDeclaration",
                    "src": "3512:7:30"
                  }
                ],
                "id": 9466,
                "name": "ParameterList",
                "src": "3511:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9466
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "liquidationInitiator",
                          "referencedDeclaration": 3856,
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9467,
                            "name": "Identifier",
                            "src": "3538:4:30"
                          }
                        ],
                        "id": 9468,
                        "name": "MemberAccess",
                        "src": "3538:25:30"
                      }
                    ],
                    "id": 9469,
                    "name": "Return",
                    "src": "3531:32:30"
                  }
                ],
                "id": 9470,
                "name": "Block",
                "src": "3521:49:30"
              }
            ],
            "id": 9471,
            "name": "FunctionDefinition",
            "src": "3456:114:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getLiquidationTimestamp",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9472,
                "name": "ParameterList",
                "src": "3608:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9480,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9473,
                        "name": "ElementaryTypeName",
                        "src": "3632:7:30"
                      }
                    ],
                    "id": 9474,
                    "name": "VariableDeclaration",
                    "src": "3632:7:30"
                  }
                ],
                "id": 9475,
                "name": "ParameterList",
                "src": "3631:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9475
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "liquidationInitiated",
                          "referencedDeclaration": 3852,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9476,
                            "name": "Identifier",
                            "src": "3658:4:30"
                          }
                        ],
                        "id": 9477,
                        "name": "MemberAccess",
                        "src": "3658:25:30"
                      }
                    ],
                    "id": 9478,
                    "name": "Return",
                    "src": "3651:32:30"
                  }
                ],
                "id": 9479,
                "name": "Block",
                "src": "3641:49:30"
              }
            ],
            "id": 9480,
            "name": "FunctionDefinition",
            "src": "3576:114:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getLiquidationAndCourtesyInitiated",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9481,
                "name": "ParameterList",
                "src": "3739:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9494,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9482,
                        "name": "ElementaryTypeName",
                        "src": "3763:7:30"
                      }
                    ],
                    "id": 9483,
                    "name": "VariableDeclaration",
                    "src": "3763:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9494,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9484,
                        "name": "ElementaryTypeName",
                        "src": "3772:7:30"
                      }
                    ],
                    "id": 9485,
                    "name": "VariableDeclaration",
                    "src": "3772:7:30"
                  }
                ],
                "id": 9486,
                "name": "ParameterList",
                "src": "3762:18:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9486
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,uint256)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidationInitiated",
                              "referencedDeclaration": 3852,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9487,
                                "name": "Identifier",
                                "src": "3799:4:30"
                              }
                            ],
                            "id": 9488,
                            "name": "MemberAccess",
                            "src": "3799:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "courtesyCallInitiated",
                              "referencedDeclaration": 3854,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9489,
                                "name": "Identifier",
                                "src": "3826:4:30"
                              }
                            ],
                            "id": 9490,
                            "name": "MemberAccess",
                            "src": "3826:26:30"
                          }
                        ],
                        "id": 9491,
                        "name": "TupleExpression",
                        "src": "3798:55:30"
                      }
                    ],
                    "id": 9492,
                    "name": "Return",
                    "src": "3791:62:30"
                  }
                ],
                "id": 9493,
                "name": "Block",
                "src": "3781:79:30"
              }
            ],
            "id": 9494,
            "name": "FunctionDefinition",
            "src": "3696:164:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setKeepAddress",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_keepAddress",
                      "scope": 9506,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9495,
                        "name": "ElementaryTypeName",
                        "src": "3890:7:30"
                      }
                    ],
                    "id": 9496,
                    "name": "VariableDeclaration",
                    "src": "3890:20:30"
                  }
                ],
                "id": 9497,
                "name": "ParameterList",
                "src": "3889:22:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9498,
                "name": "ParameterList",
                "src": "3919:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keepAddress",
                              "referencedDeclaration": 3858,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9499,
                                "name": "Identifier",
                                "src": "3929:4:30"
                              }
                            ],
                            "id": 9501,
                            "name": "MemberAccess",
                            "src": "3929:16:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9496,
                              "type": "address",
                              "value": "_keepAddress"
                            },
                            "id": 9502,
                            "name": "Identifier",
                            "src": "3948:12:30"
                          }
                        ],
                        "id": 9503,
                        "name": "Assignment",
                        "src": "3929:31:30"
                      }
                    ],
                    "id": 9504,
                    "name": "ExpressionStatement",
                    "src": "3929:31:30"
                  }
                ],
                "id": 9505,
                "name": "Block",
                "src": "3919:48:30"
              }
            ],
            "id": 9506,
            "name": "FunctionDefinition",
            "src": "3866:101:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setVendingMachineAddress",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vendingMachineAddress",
                      "scope": 9518,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9507,
                        "name": "ElementaryTypeName",
                        "src": "4007:7:30"
                      }
                    ],
                    "id": 9508,
                    "name": "VariableDeclaration",
                    "src": "4007:30:30"
                  }
                ],
                "id": 9509,
                "name": "ParameterList",
                "src": "4006:32:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9510,
                "name": "ParameterList",
                "src": "4046:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "vendingMachineAddress",
                              "referencedDeclaration": 3836,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9511,
                                "name": "Identifier",
                                "src": "4056:4:30"
                              }
                            ],
                            "id": 9513,
                            "name": "MemberAccess",
                            "src": "4056:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9508,
                              "type": "address",
                              "value": "_vendingMachineAddress"
                            },
                            "id": 9514,
                            "name": "Identifier",
                            "src": "4085:22:30"
                          }
                        ],
                        "id": 9515,
                        "name": "Assignment",
                        "src": "4056:51:30"
                      }
                    ],
                    "id": 9516,
                    "name": "ExpressionStatement",
                    "src": "4056:51:30"
                  }
                ],
                "id": 9517,
                "name": "Block",
                "src": "4046:68:30"
              }
            ],
            "id": 9518,
            "name": "FunctionDefinition",
            "src": "3973:141:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setSigningGroupRequestedAt",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupRequestedAt",
                      "scope": 9530,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9519,
                        "name": "ElementaryTypeName",
                        "src": "4156:7:30"
                      }
                    ],
                    "id": 9520,
                    "name": "VariableDeclaration",
                    "src": "4156:32:30"
                  }
                ],
                "id": 9521,
                "name": "ParameterList",
                "src": "4155:34:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9522,
                "name": "ParameterList",
                "src": "4197:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupRequestedAt",
                              "referencedDeclaration": 3860,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9523,
                                "name": "Identifier",
                                "src": "4207:4:30"
                              }
                            ],
                            "id": 9525,
                            "name": "MemberAccess",
                            "src": "4207:28:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9520,
                              "type": "uint256",
                              "value": "_signingGroupRequestedAt"
                            },
                            "id": 9526,
                            "name": "Identifier",
                            "src": "4238:24:30"
                          }
                        ],
                        "id": 9527,
                        "name": "Assignment",
                        "src": "4207:55:30"
                      }
                    ],
                    "id": 9528,
                    "name": "ExpressionStatement",
                    "src": "4207:55:30"
                  }
                ],
                "id": 9529,
                "name": "Block",
                "src": "4197:72:30"
              }
            ],
            "id": 9530,
            "name": "FunctionDefinition",
            "src": "4120:149:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getSigningGroupRequestedAt",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9531,
                "name": "ParameterList",
                "src": "4310:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9539,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9532,
                        "name": "ElementaryTypeName",
                        "src": "4334:7:30"
                      }
                    ],
                    "id": 9533,
                    "name": "VariableDeclaration",
                    "src": "4334:7:30"
                  }
                ],
                "id": 9534,
                "name": "ParameterList",
                "src": "4333:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9534
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "signingGroupRequestedAt",
                          "referencedDeclaration": 3860,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9535,
                            "name": "Identifier",
                            "src": "4360:4:30"
                          }
                        ],
                        "id": 9536,
                        "name": "MemberAccess",
                        "src": "4360:28:30"
                      }
                    ],
                    "id": 9537,
                    "name": "Return",
                    "src": "4353:35:30"
                  }
                ],
                "id": 9538,
                "name": "Block",
                "src": "4343:52:30"
              }
            ],
            "id": 9539,
            "name": "FunctionDefinition",
            "src": "4275:120:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setFundingProofTimerStart",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundingProofTimerStart",
                      "scope": 9551,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9540,
                        "name": "ElementaryTypeName",
                        "src": "4436:7:30"
                      }
                    ],
                    "id": 9541,
                    "name": "VariableDeclaration",
                    "src": "4436:31:30"
                  }
                ],
                "id": 9542,
                "name": "ParameterList",
                "src": "4435:33:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9543,
                "name": "ParameterList",
                "src": "4476:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundingProofTimerStart",
                              "referencedDeclaration": 3862,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9544,
                                "name": "Identifier",
                                "src": "4486:4:30"
                              }
                            ],
                            "id": 9546,
                            "name": "MemberAccess",
                            "src": "4486:27:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9541,
                              "type": "uint256",
                              "value": "_fundingProofTimerStart"
                            },
                            "id": 9547,
                            "name": "Identifier",
                            "src": "4516:23:30"
                          }
                        ],
                        "id": 9548,
                        "name": "Assignment",
                        "src": "4486:53:30"
                      }
                    ],
                    "id": 9549,
                    "name": "ExpressionStatement",
                    "src": "4486:53:30"
                  }
                ],
                "id": 9550,
                "name": "Block",
                "src": "4476:70:30"
              }
            ],
            "id": 9551,
            "name": "FunctionDefinition",
            "src": "4401:145:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getFundingProofTimerStart",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9552,
                "name": "ParameterList",
                "src": "4586:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9560,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9553,
                        "name": "ElementaryTypeName",
                        "src": "4610:7:30"
                      }
                    ],
                    "id": 9554,
                    "name": "VariableDeclaration",
                    "src": "4610:7:30"
                  }
                ],
                "id": 9555,
                "name": "ParameterList",
                "src": "4609:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9555
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "fundingProofTimerStart",
                          "referencedDeclaration": 3862,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9556,
                            "name": "Identifier",
                            "src": "4636:4:30"
                          }
                        ],
                        "id": 9557,
                        "name": "MemberAccess",
                        "src": "4636:27:30"
                      }
                    ],
                    "id": 9558,
                    "name": "Return",
                    "src": "4629:34:30"
                  }
                ],
                "id": 9559,
                "name": "Block",
                "src": "4619:51:30"
              }
            ],
            "id": 9560,
            "name": "FunctionDefinition",
            "src": "4552:118:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setSigningGroupPublicKey",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_x",
                      "scope": 9580,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9561,
                        "name": "ElementaryTypeName",
                        "src": "4710:7:30"
                      }
                    ],
                    "id": 9562,
                    "name": "VariableDeclaration",
                    "src": "4710:10:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_y",
                      "scope": 9580,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9563,
                        "name": "ElementaryTypeName",
                        "src": "4721:7:30"
                      }
                    ],
                    "id": 9564,
                    "name": "VariableDeclaration",
                    "src": "4721:10:30"
                  }
                ],
                "id": 9565,
                "name": "ParameterList",
                "src": "4709:23:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9566,
                "name": "ParameterList",
                "src": "4740:0:30"
              },
              {
                "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": 9567,
                                "name": "Identifier",
                                "src": "4750:4:30"
                              }
                            ],
                            "id": 9569,
                            "name": "MemberAccess",
                            "src": "4750:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9562,
                              "type": "bytes32",
                              "value": "_x"
                            },
                            "id": 9570,
                            "name": "Identifier",
                            "src": "4777:2:30"
                          }
                        ],
                        "id": 9571,
                        "name": "Assignment",
                        "src": "4750:29:30"
                      }
                    ],
                    "id": 9572,
                    "name": "ExpressionStatement",
                    "src": "4750:29:30"
                  },
                  {
                    "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": 9573,
                                "name": "Identifier",
                                "src": "4789:4:30"
                              }
                            ],
                            "id": 9575,
                            "name": "MemberAccess",
                            "src": "4789:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9564,
                              "type": "bytes32",
                              "value": "_y"
                            },
                            "id": 9576,
                            "name": "Identifier",
                            "src": "4816:2:30"
                          }
                        ],
                        "id": 9577,
                        "name": "Assignment",
                        "src": "4789:29:30"
                      }
                    ],
                    "id": 9578,
                    "name": "ExpressionStatement",
                    "src": "4789:29:30"
                  }
                ],
                "id": 9579,
                "name": "Block",
                "src": "4740:85:30"
              }
            ],
            "id": 9580,
            "name": "FunctionDefinition",
            "src": "4676:149:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getSigningGroupPublicKey",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9581,
                "name": "ParameterList",
                "src": "4864:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9594,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9582,
                        "name": "ElementaryTypeName",
                        "src": "4888:7:30"
                      }
                    ],
                    "id": 9583,
                    "name": "VariableDeclaration",
                    "src": "4888:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9594,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9584,
                        "name": "ElementaryTypeName",
                        "src": "4897:7:30"
                      }
                    ],
                    "id": 9585,
                    "name": "VariableDeclaration",
                    "src": "4897:7:30"
                  }
                ],
                "id": 9586,
                "name": "ParameterList",
                "src": "4887:18:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9586
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(bytes32,bytes32)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9587,
                                "name": "Identifier",
                                "src": "4923:4:30"
                              }
                            ],
                            "id": 9588,
                            "name": "MemberAccess",
                            "src": "4923:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9589,
                                "name": "Identifier",
                                "src": "4949:4:30"
                              }
                            ],
                            "id": 9590,
                            "name": "MemberAccess",
                            "src": "4949:24:30"
                          }
                        ],
                        "id": 9591,
                        "name": "TupleExpression",
                        "src": "4922:52:30"
                      }
                    ],
                    "id": 9592,
                    "name": "Return",
                    "src": "4915:59:30"
                  }
                ],
                "id": 9593,
                "name": "Block",
                "src": "4905:76:30"
              }
            ],
            "id": 9594,
            "name": "FunctionDefinition",
            "src": "4831:150:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setRequestInfo",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerAddress",
                      "scope": 9638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 9595,
                        "name": "ElementaryTypeName",
                        "src": "5020:15:30"
                      }
                    ],
                    "id": 9596,
                    "name": "VariableDeclaration",
                    "src": "5020:32:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerOutputScript",
                      "scope": 9638,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9597,
                        "name": "ElementaryTypeName",
                        "src": "5062:5:30"
                      }
                    ],
                    "id": 9598,
                    "name": "VariableDeclaration",
                    "src": "5062:34:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initialRedemptionFee",
                      "scope": 9638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9599,
                        "name": "ElementaryTypeName",
                        "src": "5106:7:30"
                      }
                    ],
                    "id": 9600,
                    "name": "VariableDeclaration",
                    "src": "5106:29:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_withdrawalRequestTime",
                      "scope": 9638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9601,
                        "name": "ElementaryTypeName",
                        "src": "5145:7:30"
                      }
                    ],
                    "id": 9602,
                    "name": "VariableDeclaration",
                    "src": "5145:30:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_lastRequestedDigest",
                      "scope": 9638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9603,
                        "name": "ElementaryTypeName",
                        "src": "5185:7:30"
                      }
                    ],
                    "id": 9604,
                    "name": "VariableDeclaration",
                    "src": "5185:28:30"
                  }
                ],
                "id": 9605,
                "name": "ParameterList",
                "src": "5010:209:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9606,
                "name": "ParameterList",
                "src": "5227:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "redeemerAddress",
                              "referencedDeclaration": 3868,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9607,
                                "name": "Identifier",
                                "src": "5237:4:30"
                              }
                            ],
                            "id": 9609,
                            "name": "MemberAccess",
                            "src": "5237:20:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9596,
                              "type": "address payable",
                              "value": "_redeemerAddress"
                            },
                            "id": 9610,
                            "name": "Identifier",
                            "src": "5260:16:30"
                          }
                        ],
                        "id": 9611,
                        "name": "Assignment",
                        "src": "5237:39:30"
                      }
                    ],
                    "id": 9612,
                    "name": "ExpressionStatement",
                    "src": "5237:39:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "redeemerOutputScript",
                              "referencedDeclaration": 3870,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9613,
                                "name": "Identifier",
                                "src": "5286:4:30"
                              }
                            ],
                            "id": 9615,
                            "name": "MemberAccess",
                            "src": "5286:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9598,
                              "type": "bytes memory",
                              "value": "_redeemerOutputScript"
                            },
                            "id": 9616,
                            "name": "Identifier",
                            "src": "5314:21:30"
                          }
                        ],
                        "id": 9617,
                        "name": "Assignment",
                        "src": "5286:49:30"
                      }
                    ],
                    "id": 9618,
                    "name": "ExpressionStatement",
                    "src": "5286:49:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "initialRedemptionFee",
                              "referencedDeclaration": 3872,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9619,
                                "name": "Identifier",
                                "src": "5345:4:30"
                              }
                            ],
                            "id": 9621,
                            "name": "MemberAccess",
                            "src": "5345:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9600,
                              "type": "uint256",
                              "value": "_initialRedemptionFee"
                            },
                            "id": 9622,
                            "name": "Identifier",
                            "src": "5373:21:30"
                          }
                        ],
                        "id": 9623,
                        "name": "Assignment",
                        "src": "5345:49:30"
                      }
                    ],
                    "id": 9624,
                    "name": "ExpressionStatement",
                    "src": "5345:49:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "withdrawalRequestTime",
                              "referencedDeclaration": 3876,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9625,
                                "name": "Identifier",
                                "src": "5404:4:30"
                              }
                            ],
                            "id": 9627,
                            "name": "MemberAccess",
                            "src": "5404:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9602,
                              "type": "uint256",
                              "value": "_withdrawalRequestTime"
                            },
                            "id": 9628,
                            "name": "Identifier",
                            "src": "5433:22:30"
                          }
                        ],
                        "id": 9629,
                        "name": "Assignment",
                        "src": "5404:51:30"
                      }
                    ],
                    "id": 9630,
                    "name": "ExpressionStatement",
                    "src": "5404:51:30"
                  },
                  {
                    "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": "lastRequestedDigest",
                              "referencedDeclaration": 3878,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9631,
                                "name": "Identifier",
                                "src": "5465:4:30"
                              }
                            ],
                            "id": 9633,
                            "name": "MemberAccess",
                            "src": "5465:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9604,
                              "type": "bytes32",
                              "value": "_lastRequestedDigest"
                            },
                            "id": 9634,
                            "name": "Identifier",
                            "src": "5492:20:30"
                          }
                        ],
                        "id": 9635,
                        "name": "Assignment",
                        "src": "5465:47:30"
                      }
                    ],
                    "id": 9636,
                    "name": "ExpressionStatement",
                    "src": "5465:47:30"
                  }
                ],
                "id": 9637,
                "name": "Block",
                "src": "5227:292:30"
              }
            ],
            "id": 9638,
            "name": "FunctionDefinition",
            "src": "4987:532:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLatestRedemptionFee",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_latestRedemptionFee",
                      "scope": 9650,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9639,
                        "name": "ElementaryTypeName",
                        "src": "5557:7:30"
                      }
                    ],
                    "id": 9640,
                    "name": "VariableDeclaration",
                    "src": "5557:28:30"
                  }
                ],
                "id": 9641,
                "name": "ParameterList",
                "src": "5556:30:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9642,
                "name": "ParameterList",
                "src": "5594:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "latestRedemptionFee",
                              "referencedDeclaration": 3874,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9643,
                                "name": "Identifier",
                                "src": "5604:4:30"
                              }
                            ],
                            "id": 9645,
                            "name": "MemberAccess",
                            "src": "5604:24:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9640,
                              "type": "uint256",
                              "value": "_latestRedemptionFee"
                            },
                            "id": 9646,
                            "name": "Identifier",
                            "src": "5631:20:30"
                          }
                        ],
                        "id": 9647,
                        "name": "Assignment",
                        "src": "5604:47:30"
                      }
                    ],
                    "id": 9648,
                    "name": "ExpressionStatement",
                    "src": "5604:47:30"
                  }
                ],
                "id": 9649,
                "name": "Block",
                "src": "5594:64:30"
              }
            ],
            "id": 9650,
            "name": "FunctionDefinition",
            "src": "5525:133:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getLatestRedemptionFee",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9651,
                "name": "ParameterList",
                "src": "5695:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9652,
                        "name": "ElementaryTypeName",
                        "src": "5719:7:30"
                      }
                    ],
                    "id": 9653,
                    "name": "VariableDeclaration",
                    "src": "5719:7:30"
                  }
                ],
                "id": 9654,
                "name": "ParameterList",
                "src": "5718:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9654
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "latestRedemptionFee",
                          "referencedDeclaration": 3874,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9655,
                            "name": "Identifier",
                            "src": "5745:4:30"
                          }
                        ],
                        "id": 9656,
                        "name": "MemberAccess",
                        "src": "5745:24:30"
                      }
                    ],
                    "id": 9657,
                    "name": "Return",
                    "src": "5738:31:30"
                  }
                ],
                "id": 9658,
                "name": "Block",
                "src": "5728:48:30"
              }
            ],
            "id": 9659,
            "name": "FunctionDefinition",
            "src": "5664:112:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setRedeemerAddress",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerAddress",
                      "scope": 9671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 9660,
                        "name": "ElementaryTypeName",
                        "src": "5819:15:30"
                      }
                    ],
                    "id": 9661,
                    "name": "VariableDeclaration",
                    "src": "5819:32:30"
                  }
                ],
                "id": 9662,
                "name": "ParameterList",
                "src": "5809:48:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9663,
                "name": "ParameterList",
                "src": "5865:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "redeemerAddress",
                              "referencedDeclaration": 3868,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9664,
                                "name": "Identifier",
                                "src": "5875:4:30"
                              }
                            ],
                            "id": 9666,
                            "name": "MemberAccess",
                            "src": "5875:20:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9661,
                              "type": "address payable",
                              "value": "_redeemerAddress"
                            },
                            "id": 9667,
                            "name": "Identifier",
                            "src": "5898:16:30"
                          }
                        ],
                        "id": 9668,
                        "name": "Assignment",
                        "src": "5875:39:30"
                      }
                    ],
                    "id": 9669,
                    "name": "ExpressionStatement",
                    "src": "5875:39:30"
                  }
                ],
                "id": 9670,
                "name": "Block",
                "src": "5865:56:30"
              }
            ],
            "id": 9671,
            "name": "FunctionDefinition",
            "src": "5782:139:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getRequestInfo",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9672,
                "name": "ParameterList",
                "src": "5950:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9697,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9673,
                        "name": "ElementaryTypeName",
                        "src": "5974:7:30"
                      }
                    ],
                    "id": 9674,
                    "name": "VariableDeclaration",
                    "src": "5974:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9697,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9675,
                        "name": "ElementaryTypeName",
                        "src": "5983:5:30"
                      }
                    ],
                    "id": 9676,
                    "name": "VariableDeclaration",
                    "src": "5983:12:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9697,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9677,
                        "name": "ElementaryTypeName",
                        "src": "5997:7:30"
                      }
                    ],
                    "id": 9678,
                    "name": "VariableDeclaration",
                    "src": "5997:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9697,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9679,
                        "name": "ElementaryTypeName",
                        "src": "6006:7:30"
                      }
                    ],
                    "id": 9680,
                    "name": "VariableDeclaration",
                    "src": "6006:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9697,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9681,
                        "name": "ElementaryTypeName",
                        "src": "6015:7:30"
                      }
                    ],
                    "id": 9682,
                    "name": "VariableDeclaration",
                    "src": "6015:7:30"
                  }
                ],
                "id": 9683,
                "name": "ParameterList",
                "src": "5973:50:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9683
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(address payable,bytes storage ref,uint256,uint256,bytes32)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "redeemerAddress",
                              "referencedDeclaration": 3868,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9684,
                                "name": "Identifier",
                                "src": "6055:4:30"
                              }
                            ],
                            "id": 9685,
                            "name": "MemberAccess",
                            "src": "6055:20:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "redeemerOutputScript",
                              "referencedDeclaration": 3870,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9686,
                                "name": "Identifier",
                                "src": "6089:4:30"
                              }
                            ],
                            "id": 9687,
                            "name": "MemberAccess",
                            "src": "6089:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialRedemptionFee",
                              "referencedDeclaration": 3872,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9688,
                                "name": "Identifier",
                                "src": "6128:4:30"
                              }
                            ],
                            "id": 9689,
                            "name": "MemberAccess",
                            "src": "6128:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "withdrawalRequestTime",
                              "referencedDeclaration": 3876,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9690,
                                "name": "Identifier",
                                "src": "6167:4:30"
                              }
                            ],
                            "id": 9691,
                            "name": "MemberAccess",
                            "src": "6167:26:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "lastRequestedDigest",
                              "referencedDeclaration": 3878,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9692,
                                "name": "Identifier",
                                "src": "6207:4:30"
                              }
                            ],
                            "id": 9693,
                            "name": "MemberAccess",
                            "src": "6207:24:30"
                          }
                        ],
                        "id": 9694,
                        "name": "TupleExpression",
                        "src": "6041:200:30"
                      }
                    ],
                    "id": 9695,
                    "name": "Return",
                    "src": "6034:207:30"
                  }
                ],
                "id": 9696,
                "name": "Block",
                "src": "6024:224:30"
              }
            ],
            "id": 9697,
            "name": "FunctionDefinition",
            "src": "5927:321:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setFundingInfo",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_utxoValueBytes",
                      "scope": 9725,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes8",
                          "type": "bytes8"
                        },
                        "id": 9698,
                        "name": "ElementaryTypeName",
                        "src": "6287:6:30"
                      }
                    ],
                    "id": 9699,
                    "name": "VariableDeclaration",
                    "src": "6287:22:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundedAt",
                      "scope": 9725,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9700,
                        "name": "ElementaryTypeName",
                        "src": "6319:7:30"
                      }
                    ],
                    "id": 9701,
                    "name": "VariableDeclaration",
                    "src": "6319:17:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_utxoOutpoint",
                      "scope": 9725,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9702,
                        "name": "ElementaryTypeName",
                        "src": "6346:5:30"
                      }
                    ],
                    "id": 9703,
                    "name": "VariableDeclaration",
                    "src": "6346:26:30"
                  }
                ],
                "id": 9704,
                "name": "ParameterList",
                "src": "6277:101:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9705,
                "name": "ParameterList",
                "src": "6386:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "utxoValueBytes",
                              "referencedDeclaration": 3880,
                              "type": "bytes8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9706,
                                "name": "Identifier",
                                "src": "6396:4:30"
                              }
                            ],
                            "id": 9708,
                            "name": "MemberAccess",
                            "src": "6396:19:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9699,
                              "type": "bytes8",
                              "value": "_utxoValueBytes"
                            },
                            "id": 9709,
                            "name": "Identifier",
                            "src": "6418:15:30"
                          }
                        ],
                        "id": 9710,
                        "name": "Assignment",
                        "src": "6396:37:30"
                      }
                    ],
                    "id": 9711,
                    "name": "ExpressionStatement",
                    "src": "6396:37:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundedAt",
                              "referencedDeclaration": 3882,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9712,
                                "name": "Identifier",
                                "src": "6443:4:30"
                              }
                            ],
                            "id": 9714,
                            "name": "MemberAccess",
                            "src": "6443:13:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9701,
                              "type": "uint256",
                              "value": "_fundedAt"
                            },
                            "id": 9715,
                            "name": "Identifier",
                            "src": "6459:9:30"
                          }
                        ],
                        "id": 9716,
                        "name": "Assignment",
                        "src": "6443:25:30"
                      }
                    ],
                    "id": 9717,
                    "name": "ExpressionStatement",
                    "src": "6443:25:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "utxoOutpoint",
                              "referencedDeclaration": 3884,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9718,
                                "name": "Identifier",
                                "src": "6478:4:30"
                              }
                            ],
                            "id": 9720,
                            "name": "MemberAccess",
                            "src": "6478:17:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9703,
                              "type": "bytes memory",
                              "value": "_utxoOutpoint"
                            },
                            "id": 9721,
                            "name": "Identifier",
                            "src": "6498:13:30"
                          }
                        ],
                        "id": 9722,
                        "name": "Assignment",
                        "src": "6478:33:30"
                      }
                    ],
                    "id": 9723,
                    "name": "ExpressionStatement",
                    "src": "6478:33:30"
                  }
                ],
                "id": 9724,
                "name": "Block",
                "src": "6386:132:30"
              }
            ],
            "id": 9725,
            "name": "FunctionDefinition",
            "src": "6254:264:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "calculateRedemptionTbtcAmounts",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemer",
                      "scope": 9743,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 9726,
                        "name": "ElementaryTypeName",
                        "src": "6564:7:30"
                      }
                    ],
                    "id": 9727,
                    "name": "VariableDeclaration",
                    "src": "6564:17:30"
                  }
                ],
                "id": 9728,
                "name": "ParameterList",
                "src": "6563:19:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9743,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9729,
                        "name": "ElementaryTypeName",
                        "src": "6604:7:30"
                      }
                    ],
                    "id": 9730,
                    "name": "VariableDeclaration",
                    "src": "6604:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9743,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9731,
                        "name": "ElementaryTypeName",
                        "src": "6613:7:30"
                      }
                    ],
                    "id": 9732,
                    "name": "VariableDeclaration",
                    "src": "6613:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9743,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9733,
                        "name": "ElementaryTypeName",
                        "src": "6622:7:30"
                      }
                    ],
                    "id": 9734,
                    "name": "VariableDeclaration",
                    "src": "6622:7:30"
                  }
                ],
                "id": 9735,
                "name": "ParameterList",
                "src": "6603:27:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9735
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple(uint256,uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "calculateRedemptionTbtcAmounts",
                              "referencedDeclaration": 5032,
                              "type": "function (struct DepositUtils.Deposit storage pointer,address,bool) view returns (uint256,uint256,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9736,
                                "name": "Identifier",
                                "src": "6648:4:30"
                              }
                            ],
                            "id": 9737,
                            "name": "MemberAccess",
                            "src": "6648:35:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9727,
                              "type": "address",
                              "value": "_redeemer"
                            },
                            "id": 9738,
                            "name": "Identifier",
                            "src": "6684:9:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 9739,
                            "name": "Literal",
                            "src": "6695:5:30"
                          }
                        ],
                        "id": 9740,
                        "name": "FunctionCall",
                        "src": "6648:53:30"
                      }
                    ],
                    "id": 9741,
                    "name": "Return",
                    "src": "6641:60:30"
                  }
                ],
                "id": 9742,
                "name": "Block",
                "src": "6631:77:30"
              }
            ],
            "id": 9743,
            "name": "FunctionDefinition",
            "src": "6524:184:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "performRedemptionTbtcTransfers",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9744,
                "name": "ParameterList",
                "src": "6753:2:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9745,
                "name": "ParameterList",
                "src": "6763:0:30"
              },
              {
                "children": [
                  {
                    "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": "performRedemptionTbtcTransfers",
                              "referencedDeclaration": 2546,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9746,
                                "name": "Identifier",
                                "src": "6773:4:30"
                              }
                            ],
                            "id": 9748,
                            "name": "MemberAccess",
                            "src": "6773:35:30"
                          }
                        ],
                        "id": 9749,
                        "name": "FunctionCall",
                        "src": "6773:37:30"
                      }
                    ],
                    "id": 9750,
                    "name": "ExpressionStatement",
                    "src": "6773:37:30"
                  }
                ],
                "id": 9751,
                "name": "Block",
                "src": "6763:54:30"
              }
            ],
            "id": 9752,
            "name": "FunctionDefinition",
            "src": "6714:103:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setDigestApprovedAtTime",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 9768,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9753,
                        "name": "ElementaryTypeName",
                        "src": "6856:7:30"
                      }
                    ],
                    "id": 9754,
                    "name": "VariableDeclaration",
                    "src": "6856:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_timestamp",
                      "scope": 9768,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9755,
                        "name": "ElementaryTypeName",
                        "src": "6873:7:30"
                      }
                    ],
                    "id": 9756,
                    "name": "VariableDeclaration",
                    "src": "6873:18:30"
                  }
                ],
                "id": 9757,
                "name": "ParameterList",
                "src": "6855:37:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9758,
                "name": "ParameterList",
                "src": "6900:0:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "approvedDigests",
                                  "referencedDeclaration": 3892,
                                  "type": "mapping(bytes32 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 536,
                                      "type": "struct DepositUtils.Deposit storage ref",
                                      "value": "self"
                                    },
                                    "id": 9759,
                                    "name": "Identifier",
                                    "src": "6910:4:30"
                                  }
                                ],
                                "id": 9762,
                                "name": "MemberAccess",
                                "src": "6910:20:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9754,
                                  "type": "bytes32",
                                  "value": "_digest"
                                },
                                "id": 9761,
                                "name": "Identifier",
                                "src": "6931:7:30"
                              }
                            ],
                            "id": 9763,
                            "name": "IndexAccess",
                            "src": "6910:29:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9756,
                              "type": "uint256",
                              "value": "_timestamp"
                            },
                            "id": 9764,
                            "name": "Identifier",
                            "src": "6942:10:30"
                          }
                        ],
                        "id": 9765,
                        "name": "Assignment",
                        "src": "6910:42:30"
                      }
                    ],
                    "id": 9766,
                    "name": "ExpressionStatement",
                    "src": "6910:42:30"
                  }
                ],
                "id": 9767,
                "name": "Block",
                "src": "6900:59:30"
              }
            ],
            "id": 9768,
            "name": "FunctionDefinition",
            "src": "6823:136:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "startLiquidation",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_wasFraud",
                      "scope": 9780,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 9769,
                        "name": "ElementaryTypeName",
                        "src": "6991:4:30"
                      }
                    ],
                    "id": 9770,
                    "name": "VariableDeclaration",
                    "src": "6991:14:30"
                  }
                ],
                "id": 9771,
                "name": "ParameterList",
                "src": "6990:16:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9772,
                "name": "ParameterList",
                "src": "7014:0:30"
              },
              {
                "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_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "startLiquidation",
                              "referencedDeclaration": 1957,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9773,
                                "name": "Identifier",
                                "src": "7024:4:30"
                              }
                            ],
                            "id": 9775,
                            "name": "MemberAccess",
                            "src": "7024:21:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9770,
                              "type": "bool",
                              "value": "_wasFraud"
                            },
                            "id": 9776,
                            "name": "Identifier",
                            "src": "7046:9:30"
                          }
                        ],
                        "id": 9777,
                        "name": "FunctionCall",
                        "src": "7024:32:30"
                      }
                    ],
                    "id": 9778,
                    "name": "ExpressionStatement",
                    "src": "7024:32:30"
                  }
                ],
                "id": 9779,
                "name": "Block",
                "src": "7014:49:30"
              }
            ],
            "id": 9780,
            "name": "FunctionDefinition",
            "src": "6965:98:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "approveDigest",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 9791,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9781,
                        "name": "ElementaryTypeName",
                        "src": "7130:7:30"
                      }
                    ],
                    "id": 9782,
                    "name": "VariableDeclaration",
                    "src": "7130:15:30"
                  }
                ],
                "id": 9783,
                "name": "ParameterList",
                "src": "7129:17:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9784,
                "name": "ParameterList",
                "src": "7154:0:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9784
                    },
                    "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"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "approveDigest",
                              "referencedDeclaration": 2450,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9785,
                                "name": "Identifier",
                                "src": "7171:4:30"
                              }
                            ],
                            "id": 9786,
                            "name": "MemberAccess",
                            "src": "7171:18:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9782,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 9787,
                            "name": "Identifier",
                            "src": "7190:7:30"
                          }
                        ],
                        "id": 9788,
                        "name": "FunctionCall",
                        "src": "7171:27:30"
                      }
                    ],
                    "id": 9789,
                    "name": "Return",
                    "src": "7164:34:30"
                  }
                ],
                "id": 9790,
                "name": "Block",
                "src": "7154:51:30"
              }
            ],
            "id": 9791,
            "name": "FunctionDefinition",
            "src": "7107:98:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "wasDigestApprovedForSigning",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 9804,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9792,
                        "name": "ElementaryTypeName",
                        "src": "7248:7:30"
                      }
                    ],
                    "id": 9793,
                    "name": "VariableDeclaration",
                    "src": "7248:15:30"
                  }
                ],
                "id": 9794,
                "name": "ParameterList",
                "src": "7247:17:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9804,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9795,
                        "name": "ElementaryTypeName",
                        "src": "7286:7:30"
                      }
                    ],
                    "id": 9796,
                    "name": "VariableDeclaration",
                    "src": "7286:7:30"
                  }
                ],
                "id": 9797,
                "name": "ParameterList",
                "src": "7285:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9797
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "wasDigestApprovedForSigning",
                              "referencedDeclaration": 4535,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes32) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9798,
                                "name": "Identifier",
                                "src": "7312:4:30"
                              }
                            ],
                            "id": 9799,
                            "name": "MemberAccess",
                            "src": "7312:32:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9793,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 9800,
                            "name": "Identifier",
                            "src": "7345:7:30"
                          }
                        ],
                        "id": 9801,
                        "name": "FunctionCall",
                        "src": "7312:41:30"
                      }
                    ],
                    "id": 9802,
                    "name": "Return",
                    "src": "7305:48:30"
                  }
                ],
                "id": 9803,
                "name": "Block",
                "src": "7295:65:30"
              }
            ],
            "id": 9804,
            "name": "FunctionDefinition",
            "src": "7211:149:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "redemptionTransactionChecks",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txInputVector",
                      "scope": 9820,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9805,
                        "name": "ElementaryTypeName",
                        "src": "7412:5:30"
                      }
                    ],
                    "id": 9806,
                    "name": "VariableDeclaration",
                    "src": "7412:27:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txOutputVector",
                      "scope": 9820,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9807,
                        "name": "ElementaryTypeName",
                        "src": "7449:5:30"
                      }
                    ],
                    "id": 9808,
                    "name": "VariableDeclaration",
                    "src": "7449:28:30"
                  }
                ],
                "id": 9809,
                "name": "ParameterList",
                "src": "7402:81:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9820,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9810,
                        "name": "ElementaryTypeName",
                        "src": "7505:7:30"
                      }
                    ],
                    "id": 9811,
                    "name": "VariableDeclaration",
                    "src": "7505:7:30"
                  }
                ],
                "id": 9812,
                "name": "ParameterList",
                "src": "7504:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9812
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "redemptionTransactionChecks",
                              "referencedDeclaration": 3202,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes memory,bytes memory) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9813,
                                "name": "Identifier",
                                "src": "7531:4:30"
                              }
                            ],
                            "id": 9814,
                            "name": "MemberAccess",
                            "src": "7531:32:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9806,
                              "type": "bytes memory",
                              "value": "_txInputVector"
                            },
                            "id": 9815,
                            "name": "Identifier",
                            "src": "7564:14:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9808,
                              "type": "bytes memory",
                              "value": "_txOutputVector"
                            },
                            "id": 9816,
                            "name": "Identifier",
                            "src": "7580:15:30"
                          }
                        ],
                        "id": 9817,
                        "name": "FunctionCall",
                        "src": "7531:65:30"
                      }
                    ],
                    "id": 9818,
                    "name": "Return",
                    "src": "7524:72:30"
                  }
                ],
                "id": 9819,
                "name": "Block",
                "src": "7514:89:30"
              }
            ],
            "id": 9820,
            "name": "FunctionDefinition",
            "src": "7366:237:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getWithdrawalRequestTime",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9821,
                "name": "ParameterList",
                "src": "7642:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9829,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9822,
                        "name": "ElementaryTypeName",
                        "src": "7666:7:30"
                      }
                    ],
                    "id": 9823,
                    "name": "VariableDeclaration",
                    "src": "7666:7:30"
                  }
                ],
                "id": 9824,
                "name": "ParameterList",
                "src": "7665:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9824
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "withdrawalRequestTime",
                          "referencedDeclaration": 3876,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 536,
                              "type": "struct DepositUtils.Deposit storage ref",
                              "value": "self"
                            },
                            "id": 9825,
                            "name": "Identifier",
                            "src": "7691:4:30"
                          }
                        ],
                        "id": 9826,
                        "name": "MemberAccess",
                        "src": "7691:26:30"
                      }
                    ],
                    "id": 9827,
                    "name": "Return",
                    "src": "7684:33:30"
                  }
                ],
                "id": 9828,
                "name": "Block",
                "src": "7674:50:30"
              }
            ],
            "id": 9829,
            "name": "FunctionDefinition",
            "src": "7609:115:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "pushFundsToKeepGroup",
              "scope": 9852,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_ethValue",
                      "scope": 9841,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9830,
                        "name": "ElementaryTypeName",
                        "src": "7760:7:30"
                      }
                    ],
                    "id": 9831,
                    "name": "VariableDeclaration",
                    "src": "7760:17:30"
                  }
                ],
                "id": 9832,
                "name": "ParameterList",
                "src": "7759:19:30"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9833,
                "name": "ParameterList",
                "src": "7786:0:30"
              },
              {
                "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": 9834,
                                "name": "Identifier",
                                "src": "7796:4:30"
                              }
                            ],
                            "id": 9836,
                            "name": "MemberAccess",
                            "src": "7796:25:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9831,
                              "type": "uint256",
                              "value": "_ethValue"
                            },
                            "id": 9837,
                            "name": "Identifier",
                            "src": "7822:9:30"
                          }
                        ],
                        "id": 9838,
                        "name": "FunctionCall",
                        "src": "7796:36:30"
                      }
                    ],
                    "id": 9839,
                    "name": "ExpressionStatement",
                    "src": "7796:36:30"
                  }
                ],
                "id": 9840,
                "name": "Block",
                "src": "7786:53:30"
              }
            ],
            "id": 9841,
            "name": "FunctionDefinition",
            "src": "7730:109:30"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getAuctionBasePercentage",
              "scope": 9852,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9842,
                "name": "ParameterList",
                "src": "7878:2:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9851,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9843,
                        "name": "ElementaryTypeName",
                        "src": "7902:7:30"
                      }
                    ],
                    "id": 9844,
                    "name": "VariableDeclaration",
                    "src": "7902:7:30"
                  }
                ],
                "id": 9845,
                "name": "ParameterList",
                "src": "7901:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9845
                    },
                    "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": "getAuctionBasePercentage",
                              "referencedDeclaration": 4652,
                              "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": 9846,
                                "name": "Identifier",
                                "src": "7928:4:30"
                              }
                            ],
                            "id": 9847,
                            "name": "MemberAccess",
                            "src": "7928:29:30"
                          }
                        ],
                        "id": 9848,
                        "name": "FunctionCall",
                        "src": "7928:31:30"
                      }
                    ],
                    "id": 9849,
                    "name": "Return",
                    "src": "7921:38:30"
                  }
                ],
                "id": 9850,
                "name": "Block",
                "src": "7911:55:30"
              }
            ],
            "id": 9851,
            "name": "FunctionDefinition",
            "src": "7845:121:30"
          }
        ],
        "id": 9852,
        "name": "ContractDefinition",
        "src": "352:7616:30"
      }
    ],
    "id": 9853,
    "name": "SourceUnit",
    "src": "0:7969:30"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.334Z",
  "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."
      }
    }
  }
}