{
  "contractName": "DepositLiquidation",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{\"collateralizationPercentage(DepositUtils.Deposit storage)\":{\"details\":\"Compares the bond value and lot value.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"Collateralization percentage as uint.\"},\"exitCourtesyCall(DepositUtils.Deposit storage)\":{\"details\":\"Only callable if collateral is sufficient and the deposit is not expiring.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"notifyCourtesyCall(DepositUtils.Deposit storage)\":{\"details\":\"Calls out to the system for oracle info.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"notifyCourtesyCallExpired(DepositUtils.Deposit storage)\":{\"details\":\"This is treated as an abort, rather than fraud.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"notifyUndercollateralizedLiquidation(DepositUtils.Deposit storage)\":{\"details\":\"Calls out to the system for oracle info.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"provideECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"details\":\"Calls out to the keep to verify if there was fraud.\",\"params\":{\"_d\":\"Deposit storage pointer.\",\"_preimage\":\"The sha256 preimage of the digest.\",\"_r\":\"Signature R value.\",\"_s\":\"Signature S value.\",\"_signedDigest\":\"The digest signed by the signature vrs tuple.\",\"_v\":\"Signature recovery value.\"}},\"purchaseSignerBondsAtAuction(DepositUtils.Deposit storage)\":{\"details\":\"For interface, reading auctionValue will give a past value. the current is better.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"submitSignatureFraud(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"details\":\"Calls out to the keep contract. this could get expensive if preimage      is large.\",\"params\":{\"_d\":\"Deposit storage pointer.\",\"_preimage\":\"The sha256 preimage of the digest.\",\"_r\":\"Signature R value.\",\"_s\":\"Signature S value.\",\"_signedDigest\":\"The digest signed by the signature vrs tuple.\",\"_v\":\"Signature recovery value.\"}}}},\"userdoc\":{\"methods\":{\"collateralizationPercentage(DepositUtils.Deposit storage)\":{\"notice\":\"Determines the collateralization percentage of the signing group.\"},\"exitCourtesyCall(DepositUtils.Deposit storage)\":{\"notice\":\"Goes from courtesy call to active.\"},\"notifyCourtesyCall(DepositUtils.Deposit storage)\":{\"notice\":\"Notify the contract that the signers are undercollateralized.\"},\"notifyCourtesyCallExpired(DepositUtils.Deposit storage)\":{\"notice\":\"Notifies the contract that the courtesy period has elapsed.\"},\"notifyUndercollateralizedLiquidation(DepositUtils.Deposit storage)\":{\"notice\":\"Notify the contract that the signers are undercollateralized.\"},\"provideECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"notice\":\"Anyone can provide a signature that was not requested to prove fraud.\"},\"purchaseSignerBondsAtAuction(DepositUtils.Deposit storage)\":{\"notice\":\"Closes an auction and purchases the signer bonds. Payout to buyer, funder, then signers if not fraud.\"},\"submitSignatureFraud(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"notice\":\"Notifies the keep contract of fraud. Reverts if not fraud.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":\"DepositLiquidation\"},\"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/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/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\"]},\"@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/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": "0x612007610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806393a386641161006557806393a38664146102975780639c80a8ea146102c1578063a2215421146102eb578063e86e97b61461031557610092565b80630427cacd146100975780632ea845061461016e5780633bd675c8146101985780634941676c146101c2575b600080fd5b8180156100a357600080fd5b5061016c600480360360c08110156100ba57600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100f757600080fd5b82018360208201111561010957600080fd5b8035906020019184600183028401116401000000008311171561012b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610344945050505050565b005b81801561017a57600080fd5b5061016c6004803603602081101561019157600080fd5b5035610456565b8180156101a457600080fd5b5061016c600480360360208110156101bb57600080fd5b5035610a92565b8180156101ce57600080fd5b5061016c600480360360c08110156101e557600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184600183028401116401000000008311171561025657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c8a945050505050565b8180156102a357600080fd5b5061016c600480360360208110156102ba57600080fd5b5035610ee2565b8180156102cd57600080fd5b5061016c600480360360208110156102e457600080fd5b5035610ffe565b8180156102f757600080fd5b5061016c6004803603602081101561030e57600080fd5b50356111a4565b6103326004803603602081101561032b57600080fd5b5035611371565b60408051918252519081900360200190f35b600a860154604051630f15d1a960e41b815260ff87166004820190815260248201879052604482018690526064820185905260a060848301908152845160a484015284516001600160a01b0390941693849363f15d1a90938b938b938b938b938b939092909160c40190602085019080838360005b838110156103d15781810151838201526020016103b9565b50505050905090810190601f1680156103fe5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d602081101561044b57600080fd5b505050505050505050565b60008173__DepositStates_________________________63a2f9a98090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104a957600080fd5b505af41580156104bd573d6000803e3d6000fd5b505050506040513d60208110156104d357600080fd5b50516040805163fb0611ff60e01b815260048101859052905191925073__DepositStates_________________________9163fb0611ff91602480820192602092909190829003018186803b15801561052b57600080fd5b505af415801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b505161059c576040805162461bcd60e51b815260206004820152601160248201527027379030b1ba34bb329030bab1ba34b7b760791b604482015290519081900360640190fd5b8173__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156105ed57600080fd5b505af4158015610601573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561065657600080fd5b505af415801561066a573d6000803e3d6000fd5b50505050600f8201546001600160a01b031680610701578273__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156106d257600080fd5b505af41580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b505190505b60008373__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561075457600080fd5b505af4158015610768573d6000803e3d6000fd5b505050506040513d602081101561077e57600080fd5b50516001850154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b5051101561083b5760405162461bcd60e51b8152600401808060200182810382526029815260200180611eab6029913960400191505060405180910390fd5b60048401546001600160a01b03838116911614156108c55760018401546040805163079cc67960e41b81523360048201526024810184905290516001600160a01b03909216916379cc67909160448082019260009290919082900301818387803b1580156108a857600080fd5b505af11580156108bc573d6000803e3d6000fd5b50505050610950565b6001840154604080516323b872dd60e01b81523360048201526001600160a01b03858116602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561092357600080fd5b505af1158015610937573d6000803e3d6000fd5b505050506040513d602081101561094d57600080fd5b50505b60008473__DepositUtils__________________________6350ef3aa190916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156109a357600080fd5b505af41580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b505190506109e285338363ffffffff6114c416565b6109eb85611510565b600985015447906001600160a01b031680610a05575061dead5b82600101821115610a89576000610a22838563ffffffff61165516565b90508615610a4057610a3b88838363ffffffff6114c416565b610a87565b6000610a5382600263ffffffff6116b716565b9050610a65898263ffffffff61172116565b61044b83610a79848463ffffffff61165516565b8b919063ffffffff6114c416565b505b50505050505050565b8073__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ae357600080fd5b505af4158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b60576040805162461bcd60e51b815260206004820152601e60248201527f4e6f742063757272656e746c7920696e20636f7572746573792063616c6c0000604482015290519081900360640190fd5b600581015462010000900461ffff16610b7882611371565b1015610bb55760405162461bcd60e51b8152600401808060200182810382526024815260200180611ed46024913960400191505060405180910390fd5b8073__DepositStates_________________________63375ec42090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c0657600080fd5b505af4158015610c1a573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________632a2542e490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c6f57600080fd5b505af4158015610c83573d6000803e3d6000fd5b5050505050565b8573__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cdb57600080fd5b505af4158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b505115610d435760405162461bcd60e51b8152600401808060200182810382526029815260200180611f686029913960400191505060405180910390fd5b8573__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d9457600080fd5b505af4158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b505115610dfc5760405162461bcd60e51b8152600401808060200182810382526026815260200180611f1a6026913960400191505060405180910390fd5b8573__DepositStates_________________________635a33257590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e4d57600080fd5b505af4158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b505115610ec1576040805162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081a185cc81a185b1d1959606a1b604482015290519081900360640190fd5b610ecf868686868686610344565b610eda8660016117dc565b505050505050565b8073__DepositStates_________________________63afb8e29390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f3357600080fd5b505af4158015610f47573d6000803e3d6000fd5b505050506040513d6020811015610f5d57600080fd5b5051610f9a5760405162461bcd60e51b8152600401808060200182810382526026815260200180611e856026913960400191505060405180910390fd5b6005810154640100000000900461ffff16610fb482611371565b10610ff05760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb26021913960400191505060405180910390fd5b610ffb8160006117dc565b50565b8073__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561104f57600080fd5b505af4158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b50516110cc576040805162461bcd60e51b815260206004820152601d60248201527f4e6f7420696e206120636f7572746573792063616c6c20706572696f64000000604482015290519081900360640190fd5b61115073__TBTCConstants_________________________639887426d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111357600080fd5b505af4158015611127573d6000803e3d6000fd5b505050506040513d602081101561113d57600080fd5b505160088301549063ffffffff611b4216565b421015610ff0576040805162461bcd60e51b815260206004820152601f60248201527f436f75727465737920706572696f6420686173206e6f7420656c617073656400604482015290519081900360640190fd5b8073__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156111f557600080fd5b505af4158015611209573d6000803e3d6000fd5b505050506040513d602081101561121f57600080fd5b505161125c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f406028913960400191505060405180910390fd5b600581015462010000900461ffff1661127482611371565b106112b05760405162461bcd60e51b8152600401808060200182810382526022815260200180611ef86022913960400191505060405180910390fd5b4260088201556040805163171b2a0560e01b815260048101839052905173__DepositStates_________________________9163171b2a05916024808301926000929190829003018186803b15801561130857600080fd5b505af415801561131c573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________63e35227b890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c6f57600080fd5b6000808273__DepositUtils__________________________63fa067d9290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156113c557600080fd5b505af41580156113d9573d6000803e3d6000fd5b505050506040513d60208110156113ef57600080fd5b50516004840154909150600160a01b900467ffffffffffffffff1660006114168284611ba3565b905060008573__DepositUtils__________________________632fac808a90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561146b57600080fd5b505af415801561147f573d6000803e3d6000fd5b505050506040513d602081101561149557600080fd5b505190506114ba826114ae83606463ffffffff611ba316565b9063ffffffff6116b716565b9695505050505050565b6001600160a01b03821660009081526018840160205260409020546114ef908263ffffffff611b4216565b6001600160a01b039092166000908152601890930160205250604090912055565b600061151b82611bfc565b90506001600160a01b0381166115315750610ffb565b61153a82611cff565b6001830154604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561158757600080fd5b505afa15801561159b573d6000803e3d6000fd5b505050506040513d60208110156115b157600080fd5b5051106116515760018201546001600160a01b031663a9059cbb826115d585611cff565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505050506040513d602081101561164e57600080fd5b50505b5050565b6000828211156116ac576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b600080821161170d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161171857fe5b04949350505050565b80471015611776576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b801561165157600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b1580156117c857600080fd5b505af1158015610a87573d6000803e3d6000fd5b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b15801561183657600080fd5b505af415801561184a573d6000803e3d6000fd5b50505050600061185983611d1f565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b1580156118bf57600080fd5b505af41580156118d3573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561192857600080fd5b505af415801561193c573d6000803e3d6000fd5b505050506040513d602081101561195257600080fd5b5051801561195d5750825b15611a4f578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156119b357600080fd5b505af41580156119c7573d6000803e3d6000fd5b506119df92508691508390508463ffffffff6114c416565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611a3057600080fd5b505af4158015611a44573d6000803e3d6000fd5b505050505050611651565b6009840180546001600160a01b031916331790554260078501558215611add578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611ac057600080fd5b505af4158015611ad4573d6000803e3d6000fd5b5050505061164e565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611b2e57600080fd5b505af4158015610a87573d6000803e3d6000fd5b600082820183811015611b9c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082611bb2575060006116b1565b82820282848281611bbf57fe5b0414611b9c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f916021913960400191505060405180910390fd5b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b158015611c4e57600080fd5b505afa158015611c62573d6000803e3d6000fd5b505050506040513d6020811015611c7857600080fd5b5051156116b1576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b158015611ccc57600080fd5b505afa158015611ce0573d6000803e3d6000fd5b505050506040513d6020811015611cf657600080fd5b50519392505050565b60048101546000906116b190600160e81b900461ffff166114ae84611df3565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b158015611d6c57600080fd5b505af1158015611d80573d6000803e3d6000fd5b504792505050828111611dda576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b611dea818463ffffffff61165516565b95945050505050565b60006116b173__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3c57600080fd5b505af4158015611e50573d6000803e3d6000fd5b505050506040513d6020811015611e6657600080fd5b50516004840154600160a01b900467ffffffffffffffff1690611ba356fe4465706f736974206e6f7420696e20616374697665206f7220636f7572746573792063616c6c4e6f7420656e6f756768205442544320746f20636f766572206f75747374616e64696e6720646562744465706f736974206973207374696c6c20756e646572636f6c6c61746572616c697a65645369676e65727320686176652073756666696369656e7420636f6c6c61746572616c5369676e6572206c69717569646174696f6e20616c726561647920696e2070726f677265737343616e206f6e6c7920636f7572746573792063616c6c2066726f6d206163746976652073746174655573652070726f7669646546756e64696e674543445341467261756450726f6f6620696e7374656164536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774465706f736974206861732073756666696369656e7420636f6c6c61746572616ca265627a7a72315820e0c8a7f588aa7fe0d72c2a244b9f808719c4f1048e8adde3ad53a19950ab305164736f6c63430005110032",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806393a386641161006557806393a38664146102975780639c80a8ea146102c1578063a2215421146102eb578063e86e97b61461031557610092565b80630427cacd146100975780632ea845061461016e5780633bd675c8146101985780634941676c146101c2575b600080fd5b8180156100a357600080fd5b5061016c600480360360c08110156100ba57600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100f757600080fd5b82018360208201111561010957600080fd5b8035906020019184600183028401116401000000008311171561012b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610344945050505050565b005b81801561017a57600080fd5b5061016c6004803603602081101561019157600080fd5b5035610456565b8180156101a457600080fd5b5061016c600480360360208110156101bb57600080fd5b5035610a92565b8180156101ce57600080fd5b5061016c600480360360c08110156101e557600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184600183028401116401000000008311171561025657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c8a945050505050565b8180156102a357600080fd5b5061016c600480360360208110156102ba57600080fd5b5035610ee2565b8180156102cd57600080fd5b5061016c600480360360208110156102e457600080fd5b5035610ffe565b8180156102f757600080fd5b5061016c6004803603602081101561030e57600080fd5b50356111a4565b6103326004803603602081101561032b57600080fd5b5035611371565b60408051918252519081900360200190f35b600a860154604051630f15d1a960e41b815260ff87166004820190815260248201879052604482018690526064820185905260a060848301908152845160a484015284516001600160a01b0390941693849363f15d1a90938b938b938b938b938b939092909160c40190602085019080838360005b838110156103d15781810151838201526020016103b9565b50505050905090810190601f1680156103fe5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d602081101561044b57600080fd5b505050505050505050565b60008173__DepositStates_________________________63a2f9a98090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104a957600080fd5b505af41580156104bd573d6000803e3d6000fd5b505050506040513d60208110156104d357600080fd5b50516040805163fb0611ff60e01b815260048101859052905191925073__DepositStates_________________________9163fb0611ff91602480820192602092909190829003018186803b15801561052b57600080fd5b505af415801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b505161059c576040805162461bcd60e51b815260206004820152601160248201527027379030b1ba34bb329030bab1ba34b7b760791b604482015290519081900360640190fd5b8173__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156105ed57600080fd5b505af4158015610601573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561065657600080fd5b505af415801561066a573d6000803e3d6000fd5b50505050600f8201546001600160a01b031680610701578273__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156106d257600080fd5b505af41580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b505190505b60008373__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561075457600080fd5b505af4158015610768573d6000803e3d6000fd5b505050506040513d602081101561077e57600080fd5b50516001850154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b5051101561083b5760405162461bcd60e51b8152600401808060200182810382526029815260200180611eab6029913960400191505060405180910390fd5b60048401546001600160a01b03838116911614156108c55760018401546040805163079cc67960e41b81523360048201526024810184905290516001600160a01b03909216916379cc67909160448082019260009290919082900301818387803b1580156108a857600080fd5b505af11580156108bc573d6000803e3d6000fd5b50505050610950565b6001840154604080516323b872dd60e01b81523360048201526001600160a01b03858116602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561092357600080fd5b505af1158015610937573d6000803e3d6000fd5b505050506040513d602081101561094d57600080fd5b50505b60008473__DepositUtils__________________________6350ef3aa190916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156109a357600080fd5b505af41580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b505190506109e285338363ffffffff6114c416565b6109eb85611510565b600985015447906001600160a01b031680610a05575061dead5b82600101821115610a89576000610a22838563ffffffff61165516565b90508615610a4057610a3b88838363ffffffff6114c416565b610a87565b6000610a5382600263ffffffff6116b716565b9050610a65898263ffffffff61172116565b61044b83610a79848463ffffffff61165516565b8b919063ffffffff6114c416565b505b50505050505050565b8073__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ae357600080fd5b505af4158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b5051610b60576040805162461bcd60e51b815260206004820152601e60248201527f4e6f742063757272656e746c7920696e20636f7572746573792063616c6c0000604482015290519081900360640190fd5b600581015462010000900461ffff16610b7882611371565b1015610bb55760405162461bcd60e51b8152600401808060200182810382526024815260200180611ed46024913960400191505060405180910390fd5b8073__DepositStates_________________________63375ec42090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c0657600080fd5b505af4158015610c1a573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________632a2542e490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c6f57600080fd5b505af4158015610c83573d6000803e3d6000fd5b5050505050565b8573__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cdb57600080fd5b505af4158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b505115610d435760405162461bcd60e51b8152600401808060200182810382526029815260200180611f686029913960400191505060405180910390fd5b8573__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d9457600080fd5b505af4158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b505115610dfc5760405162461bcd60e51b8152600401808060200182810382526026815260200180611f1a6026913960400191505060405180910390fd5b8573__DepositStates_________________________635a33257590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e4d57600080fd5b505af4158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b505115610ec1576040805162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081a185cc81a185b1d1959606a1b604482015290519081900360640190fd5b610ecf868686868686610344565b610eda8660016117dc565b505050505050565b8073__DepositStates_________________________63afb8e29390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f3357600080fd5b505af4158015610f47573d6000803e3d6000fd5b505050506040513d6020811015610f5d57600080fd5b5051610f9a5760405162461bcd60e51b8152600401808060200182810382526026815260200180611e856026913960400191505060405180910390fd5b6005810154640100000000900461ffff16610fb482611371565b10610ff05760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb26021913960400191505060405180910390fd5b610ffb8160006117dc565b50565b8073__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561104f57600080fd5b505af4158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b50516110cc576040805162461bcd60e51b815260206004820152601d60248201527f4e6f7420696e206120636f7572746573792063616c6c20706572696f64000000604482015290519081900360640190fd5b61115073__TBTCConstants_________________________639887426d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111357600080fd5b505af4158015611127573d6000803e3d6000fd5b505050506040513d602081101561113d57600080fd5b505160088301549063ffffffff611b4216565b421015610ff0576040805162461bcd60e51b815260206004820152601f60248201527f436f75727465737920706572696f6420686173206e6f7420656c617073656400604482015290519081900360640190fd5b8073__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156111f557600080fd5b505af4158015611209573d6000803e3d6000fd5b505050506040513d602081101561121f57600080fd5b505161125c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f406028913960400191505060405180910390fd5b600581015462010000900461ffff1661127482611371565b106112b05760405162461bcd60e51b8152600401808060200182810382526022815260200180611ef86022913960400191505060405180910390fd5b4260088201556040805163171b2a0560e01b815260048101839052905173__DepositStates_________________________9163171b2a05916024808301926000929190829003018186803b15801561130857600080fd5b505af415801561131c573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________63e35227b890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610c6f57600080fd5b6000808273__DepositUtils__________________________63fa067d9290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156113c557600080fd5b505af41580156113d9573d6000803e3d6000fd5b505050506040513d60208110156113ef57600080fd5b50516004840154909150600160a01b900467ffffffffffffffff1660006114168284611ba3565b905060008573__DepositUtils__________________________632fac808a90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561146b57600080fd5b505af415801561147f573d6000803e3d6000fd5b505050506040513d602081101561149557600080fd5b505190506114ba826114ae83606463ffffffff611ba316565b9063ffffffff6116b716565b9695505050505050565b6001600160a01b03821660009081526018840160205260409020546114ef908263ffffffff611b4216565b6001600160a01b039092166000908152601890930160205250604090912055565b600061151b82611bfc565b90506001600160a01b0381166115315750610ffb565b61153a82611cff565b6001830154604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561158757600080fd5b505afa15801561159b573d6000803e3d6000fd5b505050506040513d60208110156115b157600080fd5b5051106116515760018201546001600160a01b031663a9059cbb826115d585611cff565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505050506040513d602081101561164e57600080fd5b50505b5050565b6000828211156116ac576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b600080821161170d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161171857fe5b04949350505050565b80471015611776576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b801561165157600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b1580156117c857600080fd5b505af1158015610a87573d6000803e3d6000fd5b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b15801561183657600080fd5b505af415801561184a573d6000803e3d6000fd5b50505050600061185983611d1f565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b1580156118bf57600080fd5b505af41580156118d3573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561192857600080fd5b505af415801561193c573d6000803e3d6000fd5b505050506040513d602081101561195257600080fd5b5051801561195d5750825b15611a4f578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156119b357600080fd5b505af41580156119c7573d6000803e3d6000fd5b506119df92508691508390508463ffffffff6114c416565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611a3057600080fd5b505af4158015611a44573d6000803e3d6000fd5b505050505050611651565b6009840180546001600160a01b031916331790554260078501558215611add578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611ac057600080fd5b505af4158015611ad4573d6000803e3d6000fd5b5050505061164e565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611b2e57600080fd5b505af4158015610a87573d6000803e3d6000fd5b600082820183811015611b9c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082611bb2575060006116b1565b82820282848281611bbf57fe5b0414611b9c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f916021913960400191505060405180910390fd5b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b158015611c4e57600080fd5b505afa158015611c62573d6000803e3d6000fd5b505050506040513d6020811015611c7857600080fd5b5051156116b1576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b158015611ccc57600080fd5b505afa158015611ce0573d6000803e3d6000fd5b505050506040513d6020811015611cf657600080fd5b50519392505050565b60048101546000906116b190600160e81b900461ffff166114ae84611df3565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b158015611d6c57600080fd5b505af1158015611d80573d6000803e3d6000fd5b504792505050828111611dda576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b611dea818463ffffffff61165516565b95945050505050565b60006116b173__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3c57600080fd5b505af4158015611e50573d6000803e3d6000fd5b505050506040513d6020811015611e6657600080fd5b50516004840154600160a01b900467ffffffffffffffff1690611ba356fe4465706f736974206e6f7420696e20616374697665206f7220636f7572746573792063616c6c4e6f7420656e6f756768205442544320746f20636f766572206f75747374616e64696e6720646562744465706f736974206973207374696c6c20756e646572636f6c6c61746572616c697a65645369676e65727320686176652073756666696369656e7420636f6c6c61746572616c5369676e6572206c69717569646174696f6e20616c726561647920696e2070726f677265737343616e206f6e6c7920636f7572746573792063616c6c2066726f6d206163746976652073746174655573652070726f7669646546756e64696e674543445341467261756450726f6f6620696e7374656164536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774465706f736974206861732073756666696369656e7420636f6c6c61746572616ca265627a7a72315820e0c8a7f588aa7fe0d72c2a244b9f808719c4f1048e8adde3ad53a19950ab305164736f6c63430005110032",
  "sourceMap": "692:10000:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "692:10000:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:353;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1489:353:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1489:353:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1489:353:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1489:353:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1489:353:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1489:353:4;;-1:-1:-1;1489:353:4;;-1:-1:-1;;;;;1489:353:4:i;:::-;;5638:2547;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5638:2547:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5638:2547:4;;:::i;9026:389::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9026:389:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9026:389:4;;:::i;4725:637::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4725:637:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4725:637:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4725:637:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4725:637:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4725:637:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4725:637:4;;-1:-1:-1;4725:637:4;;-1:-1:-1;;;;;4725:637:4:i;9609:449::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9609:449:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9609:449:4;;:::i;10257:433::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10257:433:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10257:433:4;;:::i;8379:446::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8379:446:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8379:446:4;;:::i;2096:546::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2096:546:4;;:::i;:::-;;;;;;;;;;;;;;;;1489:353;1746:14;;;;1771:64;;-1:-1:-1;;;1771:64:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1746:14:4;;;;;;1771:26;;1798:2;;1802;;1806;;1810:13;;1825:9;;1771:64;;;;;;;;;;;;;;1704:22;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1771:64:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1771:64:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1771:64:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;;;1489:353:4:o;5638:2547::-;5740:14;5757:2;:31;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5757:33:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5757:33:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5757:33:4;5808:24;;;-1:-1:-1;;;5808:24:4;;;;;;;;;;5757:33;;-1:-1:-1;5808:22:4;;;;:24;;;;;5757:33;;5808:24;;;;;;;;:22;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;5808:24:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5808:24:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5808:24:4;5800:54;;;;;-1:-1:-1;;;5800:54:4;;;;;;;;;;;;-1:-1:-1;;;5800:54:4;;;;;;;;;;;;;;;5865:2;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5865:18:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5865:18:4;;;;5893:2;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5893:18:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;6256:18:4;;;;-1:-1:-1;;;;;6256:18:4;;6284:91;;6347:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6347:17:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6347:17:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6347:17:4;;-1:-1:-1;6284:91:4;6384:19;6406:2;:14;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6406:16:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6406:16:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6406:16:4;6454:12;;;;:34;;;-1:-1:-1;;;6454:34:4;;6477:10;6454:34;;;;;;6406:16;;-1:-1:-1;6406:16:4;;-1:-1:-1;;;;;6454:12:4;;;;:22;;:34;;;;;6406:16;;6454:34;;;;;;;;:12;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;6454:34:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6454:34:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6454:34:4;:49;;6433:137;;;;-1:-1:-1;;;6433:137:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6602:24;;;;-1:-1:-1;;;;;6585:41:4;;;6602:24;;6585:41;6581:251;;;6642:12;;;;:46;;;-1:-1:-1;;;6642:46:4;;6664:10;6642:46;;;;;;;;;;;;-1:-1:-1;;;;;6642:12:4;;;;:21;;:46;;;;;:12;;:46;;;;;;;;:12;;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;6642:46:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6642:46:4;;;;6581:251;;;6756:12;;;;:65;;;-1:-1:-1;;;6756:65:4;;6782:10;6756:65;;;;-1:-1:-1;;;;;6756:65:4;;;;;;;;;;;;;;;:12;;;;;:25;;:65;;;;;;;;;;;;;;:12;;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;6756:65:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6756:65:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;6581:251:4;6887:25;6915:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6915:17:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6915:17:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6915:17:4;;-1:-1:-1;6942:50:4;:2;6962:10;6915:17;6942:50;:19;:50;:::i;:::-;7064:24;:2;:22;:24::i;:::-;7505:23;;;;7446:21;;-1:-1:-1;;;;;7505:23:4;7543;7539:81;;-1:-1:-1;7602:6:4;7539:81;7654:17;7674:1;7654:21;7633:18;:42;7629:550;;;7691:28;7738:41;:18;7761:17;7738:41;:22;:41;:::i;:::-;7691:88;;7797:9;7793:376;;;7826:52;:2;7846:9;7857:20;7826:52;:19;:52;:::i;:::-;7793:376;;;7982:13;7998:27;:20;8023:1;7998:27;:24;:27;:::i;:::-;7982:43;-1:-1:-1;8043:30:4;:2;7982:43;8043:30;:23;:30;:::i;:::-;8091:63;8111:9;8122:31;:20;8147:5;8122:31;:24;:31;:::i;:::-;8091:2;;:63;;:19;:63;:::i;7793:376::-;7629:550;;5638:2547;;;;;;;:::o;9026:389::-;9112:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9112:19:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9112:19:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9112:19:4;9104:62;;;;;-1:-1:-1;;;9104:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;9248:38;;;;;;;;;9197:31;9248:38;9197:27;:31::i;:::-;:89;;9176:172;;;;-1:-1:-1;;;9176:172:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:2;:12;;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9358:14:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9358:14:4;;;;9382:2;:24;;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9382:26:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9382:26:4;;;;9026:389;:::o;4725:637::-;5008:2;:12;;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5008:14:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5008:14:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5008:14:4;5007:15;4999:69;;;;-1:-1:-1;;;4999:69:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:2;:22;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5100:24:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5100:24:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5100:24:4;5099:25;5078:110;;;;-1:-1:-1;;;5078:110:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5207:2;:13;;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5207:15:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5207:15:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5207:15:4;5206:16;5198:48;;;;;-1:-1:-1;;;5198:48:4;;;;;;;;;;;;-1:-1:-1;;;5198:48:4;;;;;;;;;;;;;;;5256:62;5277:2;5281;5285;5289;5293:13;5308:9;5256:20;:62::i;:::-;5329:26;5346:2;5350:4;5329:16;:26::i;:::-;4725:637;;;;;;:::o;9609:449::-;9742:2;:20;;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9742:22:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9742:22:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9742:22:4;9721:107;;;;-1:-1:-1;;;9721:107:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9909:46;;;;;;;;;9859:31;9909:46;9859:27;:31::i;:::-;:96;9838:176;;;;-1:-1:-1;;;9838:176:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10024:27;10041:2;10045:5;10024:16;:27::i;:::-;9609:449;:::o;10257:433::-;10364:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10364:19:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10364:19:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10364:19:4;10356:61;;;;;-1:-1:-1;;;10356:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;10483:106;10533:13;:36;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10533:38:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10533:38:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10533:38:4;10483:24;;;;;:106;:28;:106;:::i;:::-;10448:15;:141;;10427:219;;;;;-1:-1:-1;;;10427:219:4;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:446;8467:2;:11;;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8467:13:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8467:13:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8467:13:4;8459:66;;;;-1:-1:-1;;;8459:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8606:38;;;;;;;;;8556:31;8606:38;8556:27;:31::i;:::-;:88;8535:169;;;;-1:-1:-1;;;8535:169:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8741:15;8714:24;;;:42;8766:20;;;-1:-1:-1;;;8766:20:4;;;;;;;;;;:18;;;;:20;;;;;-1:-1:-1;;8766:20:4;;;;;;;:18;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;8766:20:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8766:20:4;;;;8796:2;:20;;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;2096:546:4;2211:7;2279:21;2303:2;:20;;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2303:22:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2303:22:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2303:22:4;2361:18;;;;2303:22;;-1:-1:-1;;;;2361:18:4;;;;2335:23;2409:35;2361:18;2303:22;2409:20;:35::i;:::-;2389:55;;2497:18;2518:2;:18;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2518:20:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2518:20:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2518:20:4;;-1:-1:-1;2600:34:4;2624:9;2600:19;2518:20;2615:3;2600:19;:14;:19;:::i;:::-;:23;:34;:23;:34;:::i;:::-;2592:43;2096:546;-1:-1:-1;;;;;;2096:546:4:o;20976:274:7:-;-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;22504:482::-;22572:25;22600:24;22621:2;22600:20;:24::i;:::-;22572:52;-1:-1:-1;;;;;;22709:31:7;;22705:68;;22756:7;;;22705:68;22877:17;22891:2;22877:13;:17::i;:::-;22836:12;;;;:37;;;-1:-1:-1;;;22836:37:7;;22867:4;22836:37;;;;;;-1:-1:-1;;;;;22836:12:7;;;;:22;;:37;;;;;;;;;;;;;;;:12;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;22836:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22836:37:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22836:37:7;:58;22832:148;;22910:12;;;;-1:-1:-1;;;;;22910:12:7;:21;22932:17;22951;22910:2;22951:13;:17::i;:::-;22910:59;;;;;;;;;;;;;-1:-1:-1;;;;;22910:59:7;-1:-1:-1;;;;;22910:59:7;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22910:59:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22910:59:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;22832:148:7;22504:482;;:::o;1274:179:60:-;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;23209:351:7:-;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;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;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;1693:458::-;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18359:410:7;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;5:2;18642:49:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18642:49:7;;18749:11;-1:-1:-1;;;18359:410:7:o;13961:137::-;14071:19;;;;14025:7;;14051:40;;-1:-1:-1;;;14071:19:7;;;;14051:15;14071:19;14051:11;:15::i;20331:472::-;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;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",
  "source": "pragma solidity 0.5.17;\n\nimport {BTCUtils} from \"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\";\nimport {BytesLib} from \"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\";\nimport {\n    IBondedECDSAKeep\n} from \"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\";\nimport {SafeMath} from \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport {DepositStates} from \"./DepositStates.sol\";\nimport {DepositUtils} from \"./DepositUtils.sol\";\nimport {TBTCConstants} from \"../system/TBTCConstants.sol\";\nimport {OutsourceDepositLogging} from \"./OutsourceDepositLogging.sol\";\nimport {TBTCToken} from \"../system/TBTCToken.sol\";\nimport {ITBTCSystem} from \"../interfaces/ITBTCSystem.sol\";\n\nlibrary DepositLiquidation {\n    using BTCUtils for bytes;\n    using BytesLib for bytes;\n    using SafeMath for uint256;\n    using SafeMath for uint64;\n\n    using DepositUtils for DepositUtils.Deposit;\n    using DepositStates for DepositUtils.Deposit;\n    using OutsourceDepositLogging for DepositUtils.Deposit;\n\n    /// @notice Notifies the keep contract of fraud. Reverts if not fraud.\n    /// @dev Calls out to the keep contract. this could get expensive if preimage\n    ///      is large.\n    /// @param  _d Deposit storage pointer.\n    /// @param  _v Signature recovery value.\n    /// @param  _r Signature R value.\n    /// @param  _s Signature S value.\n    /// @param _signedDigest The digest signed by the signature vrs tuple.\n    /// @param _preimage The sha256 preimage of the digest.\n    function submitSignatureFraud(\n        DepositUtils.Deposit storage _d,\n        uint8 _v,\n        bytes32 _r,\n        bytes32 _s,\n        bytes32 _signedDigest,\n        bytes memory _preimage\n    ) public {\n        IBondedECDSAKeep _keep = IBondedECDSAKeep(_d.keepAddress);\n        _keep.submitSignatureFraud(_v, _r, _s, _signedDigest, _preimage);\n    }\n\n    /// @notice     Determines the collateralization percentage of the signing group.\n    /// @dev        Compares the bond value and lot value.\n    /// @param _d   Deposit storage pointer.\n    /// @return     Collateralization percentage as uint.\n    function collateralizationPercentage(DepositUtils.Deposit storage _d)\n        public\n        view\n        returns (uint256)\n    {\n        // Determine value of the lot in wei\n        uint256 _satoshiPrice = _d.fetchBitcoinPrice();\n        uint64 _lotSizeSatoshis = _d.lotSizeSatoshis;\n        uint256 _lotValue = _lotSizeSatoshis.mul(_satoshiPrice);\n\n        // Amount of wei the signers have\n        uint256 _bondValue = _d.fetchBondAmount();\n\n        // This converts into a percentage\n        return (_bondValue.mul(100).div(_lotValue));\n    }\n\n    /// @dev              Starts signer liquidation by seizing signer bonds.\n    ///                   If the deposit is currently being redeemed, the redeemer\n    ///                   receives the full bond value; otherwise, a falling price auction\n    ///                   begins to buy 1 TBTC in exchange for a portion of the seized bonds;\n    ///                   see purchaseSignerBondsAtAuction().\n    /// @param _wasFraud  True if liquidation is being started due to fraud, false if for any other reason.\n    /// @param _d         Deposit storage pointer.\n    function startLiquidation(DepositUtils.Deposit storage _d, bool _wasFraud)\n        internal\n    {\n        _d.logStartedLiquidation(_wasFraud);\n\n        uint256 seized = _d.seizeSignerBonds();\n        address redeemerAddress = _d.redeemerAddress;\n\n        // Reclaim used state for gas savings\n        _d.redemptionTeardown();\n\n        // If we see fraud in the redemption flow, we shouldn't go to auction.\n        // Instead give the full signer bond directly to the redeemer.\n        if (_d.inRedemption() && _wasFraud) {\n            _d.setLiquidated();\n            _d.enableWithdrawal(redeemerAddress, seized);\n            _d.logLiquidated();\n            return;\n        }\n\n        _d.liquidationInitiator = msg.sender;\n        _d.liquidationInitiated = block.timestamp; // Store the timestamp for auction\n\n        if (_wasFraud) {\n            _d.setFraudLiquidationInProgress();\n        } else {\n            _d.setLiquidationInProgress();\n        }\n    }\n\n    /// @notice                 Anyone can provide a signature that was not requested to prove fraud.\n    /// @dev                    Calls out to the keep to verify if there was fraud.\n    /// @param  _d              Deposit storage pointer.\n    /// @param  _v              Signature recovery value.\n    /// @param  _r              Signature R value.\n    /// @param  _s              Signature S value.\n    /// @param _signedDigest    The digest signed by the signature vrs tuple.\n    /// @param _preimage        The sha256 preimage of the digest.\n    function provideECDSAFraudProof(\n        DepositUtils.Deposit storage _d,\n        uint8 _v,\n        bytes32 _r,\n        bytes32 _s,\n        bytes32 _signedDigest,\n        bytes memory _preimage\n    ) public {\n        // not external to allow bytes memory parameters\n        require(!_d.inFunding(), \"Use provideFundingECDSAFraudProof instead\");\n        require(\n            !_d.inSignerLiquidation(),\n            \"Signer liquidation already in progress\"\n        );\n        require(!_d.inEndState(), \"Contract has halted\");\n        submitSignatureFraud(_d, _v, _r, _s, _signedDigest, _preimage);\n\n        startLiquidation(_d, true);\n    }\n\n    /// @notice     Closes an auction and purchases the signer bonds. Payout to buyer, funder, then signers if not fraud.\n    /// @dev        For interface, reading auctionValue will give a past value. the current is better.\n    /// @param  _d  Deposit storage pointer.\n    function purchaseSignerBondsAtAuction(DepositUtils.Deposit storage _d)\n        external\n    {\n        bool _wasFraud = _d.inFraudLiquidationInProgress();\n        require(_d.inSignerLiquidation(), \"No active auction\");\n\n        _d.setLiquidated();\n        _d.logLiquidated();\n\n        // Send the TBTC to the redeemer if they exist, otherwise to the TDT\n        // holder. If the TDT holder is the Vending Machine, burn it to maintain\n        // the peg. This is because, if there is a redeemer set here, the TDT\n        // holder has already been made whole at redemption request time.\n        address tbtcRecipient = _d.redeemerAddress;\n        if (tbtcRecipient == address(0)) {\n            tbtcRecipient = _d.depositOwner();\n        }\n        uint256 lotSizeTbtc = _d.lotSizeTbtc();\n\n        require(\n            _d.tbtcToken.balanceOf(msg.sender) >= lotSizeTbtc,\n            \"Not enough TBTC to cover outstanding debt\"\n        );\n\n        if (tbtcRecipient == _d.vendingMachineAddress) {\n            _d.tbtcToken.burnFrom(msg.sender, lotSizeTbtc); // burn minimal amount to cover size\n        } else {\n            _d.tbtcToken.transferFrom(msg.sender, tbtcRecipient, lotSizeTbtc);\n        }\n\n        // Distribute funds to auction buyer\n        uint256 valueToDistribute = _d.auctionValue();\n        _d.enableWithdrawal(msg.sender, valueToDistribute);\n\n        // Send any TBTC left to the Fee Rebate Token holder\n        _d.distributeFeeRebate();\n\n        // For fraud, pay remainder to the liquidation initiator.\n        // For non-fraud, split 50-50 between initiator and signers. if the transfer amount is 1,\n        // division will yield a 0 value which causes a revert; instead,\n        // we simply ignore such a tiny amount and leave some wei dust in escrow\n        uint256 contractEthBalance = address(this).balance;\n        address payable initiator = _d.liquidationInitiator;\n\n        if (initiator == address(0)) {\n            initiator = address(0xdead);\n        }\n        if (contractEthBalance > valueToDistribute + 1) {\n            uint256 remainingUnallocated =\n                contractEthBalance.sub(valueToDistribute);\n            if (_wasFraud) {\n                _d.enableWithdrawal(initiator, remainingUnallocated);\n            } else {\n                // There will always be a liquidation initiator.\n                uint256 split = remainingUnallocated.div(2);\n                _d.pushFundsToKeepGroup(split);\n                _d.enableWithdrawal(initiator, remainingUnallocated.sub(split));\n            }\n        }\n    }\n\n    /// @notice     Notify the contract that the signers are undercollateralized.\n    /// @dev        Calls out to the system for oracle info.\n    /// @param  _d  Deposit storage pointer.\n    function notifyCourtesyCall(DepositUtils.Deposit storage _d) external {\n        require(_d.inActive(), \"Can only courtesy call from active state\");\n        require(\n            collateralizationPercentage(_d) <\n                _d.undercollateralizedThresholdPercent,\n            \"Signers have sufficient collateral\"\n        );\n        _d.courtesyCallInitiated = block.timestamp;\n        _d.setCourtesyCall();\n        _d.logCourtesyCalled();\n    }\n\n    /// @notice     Goes from courtesy call to active.\n    /// @dev        Only callable if collateral is sufficient and the deposit is not expiring.\n    /// @param  _d  Deposit storage pointer.\n    function exitCourtesyCall(DepositUtils.Deposit storage _d) external {\n        require(_d.inCourtesyCall(), \"Not currently in courtesy call\");\n        require(\n            collateralizationPercentage(_d) >=\n                _d.undercollateralizedThresholdPercent,\n            \"Deposit is still undercollateralized\"\n        );\n        _d.setActive();\n        _d.logExitedCourtesyCall();\n    }\n\n    /// @notice     Notify the contract that the signers are undercollateralized.\n    /// @dev        Calls out to the system for oracle info.\n    /// @param  _d  Deposit storage pointer.\n    function notifyUndercollateralizedLiquidation(\n        DepositUtils.Deposit storage _d\n    ) external {\n        require(\n            _d.inRedeemableState(),\n            \"Deposit not in active or courtesy call\"\n        );\n        require(\n            collateralizationPercentage(_d) <\n                _d.severelyUndercollateralizedThresholdPercent,\n            \"Deposit has sufficient collateral\"\n        );\n        startLiquidation(_d, false);\n    }\n\n    /// @notice     Notifies the contract that the courtesy period has elapsed.\n    /// @dev        This is treated as an abort, rather than fraud.\n    /// @param  _d  Deposit storage pointer.\n    function notifyCourtesyCallExpired(DepositUtils.Deposit storage _d)\n        external\n    {\n        require(_d.inCourtesyCall(), \"Not in a courtesy call period\");\n        require(\n            block.timestamp >=\n                _d.courtesyCallInitiated.add(\n                    TBTCConstants.getCourtesyCallTimeout()\n                ),\n            \"Courtesy period has not elapsed\"\n        );\n        startLiquidation(_d, false);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol",
    "exportedSymbols": {
      "DepositLiquidation": [
        2330
      ]
    },
    "id": 2331,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1759,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:4"
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
        "file": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
        "id": 1761,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 13217,
        "src": "25:74:4",
        "symbolAliases": [
          {
            "foreign": 1760,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
        "file": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
        "id": 1763,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 13433,
        "src": "100:74:4",
        "symbolAliases": [
          {
            "foreign": 1762,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "id": 1765,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 11429,
        "src": "175:99:4",
        "symbolAliases": [
          {
            "foreign": 1764,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 1767,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 16856,
        "src": "275:75:4",
        "symbolAliases": [
          {
            "foreign": 1766,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
        "file": "./DepositStates.sol",
        "id": 1769,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 3779,
        "src": "351:50:4",
        "symbolAliases": [
          {
            "foreign": 1768,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
        "file": "./DepositUtils.sol",
        "id": 1771,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 5104,
        "src": "402:48:4",
        "symbolAliases": [
          {
            "foreign": 1770,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
        "file": "../system/TBTCConstants.sol",
        "id": 1773,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 6758,
        "src": "451:58:4",
        "symbolAliases": [
          {
            "foreign": 1772,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
        "file": "./OutsourceDepositLogging.sol",
        "id": 1775,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 5419,
        "src": "510:70:4",
        "symbolAliases": [
          {
            "foreign": 1774,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
        "file": "../system/TBTCToken.sol",
        "id": 1777,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 8562,
        "src": "581:50:4",
        "symbolAliases": [
          {
            "foreign": 1776,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol",
        "file": "../interfaces/ITBTCSystem.sol",
        "id": 1779,
        "nodeType": "ImportDirective",
        "scope": 2331,
        "sourceUnit": 5512,
        "src": "632:58:4",
        "symbolAliases": [
          {
            "foreign": 1778,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2330,
        "linearizedBaseContracts": [
          2330
        ],
        "name": "DepositLiquidation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1782,
            "libraryName": {
              "contractScope": null,
              "id": 1780,
              "name": "BTCUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13216,
              "src": "731:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BTCUtils_$13216",
                "typeString": "library BTCUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "725:25:4",
            "typeName": {
              "id": 1781,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "744:5:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 1785,
            "libraryName": {
              "contractScope": null,
              "id": 1783,
              "name": "BytesLib",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13432,
              "src": "761:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesLib_$13432",
                "typeString": "library BytesLib"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "755:25:4",
            "typeName": {
              "id": 1784,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "774:5:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 1788,
            "libraryName": {
              "contractScope": null,
              "id": 1786,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16855,
              "src": "791:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$16855",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "785:27:4",
            "typeName": {
              "id": 1787,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "804:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 1791,
            "libraryName": {
              "contractScope": null,
              "id": 1789,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16855,
              "src": "823:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$16855",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "817:26:4",
            "typeName": {
              "id": 1790,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "836:6:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "id": 1794,
            "libraryName": {
              "contractScope": null,
              "id": 1792,
              "name": "DepositUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5103,
              "src": "855:12:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositUtils_$5103",
                "typeString": "library DepositUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "849:44:4",
            "typeName": {
              "contractScope": null,
              "id": 1793,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "872:20:4",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "id": 1797,
            "libraryName": {
              "contractScope": null,
              "id": 1795,
              "name": "DepositStates",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3778,
              "src": "904:13:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositStates_$3778",
                "typeString": "library DepositStates"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "898:45:4",
            "typeName": {
              "contractScope": null,
              "id": 1796,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "922:20:4",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "id": 1800,
            "libraryName": {
              "contractScope": null,
              "id": 1798,
              "name": "OutsourceDepositLogging",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5418,
              "src": "954:23:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OutsourceDepositLogging_$5418",
                "typeString": "library OutsourceDepositLogging"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "948:55:4",
            "typeName": {
              "contractScope": null,
              "id": 1799,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "982:20:4",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "body": {
              "id": 1832,
              "nodeType": "Block",
              "src": "1694:148:4",
              "statements": [
                {
                  "assignments": [
                    1816
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1816,
                      "name": "_keep",
                      "nodeType": "VariableDeclaration",
                      "scope": 1832,
                      "src": "1704:22:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                        "typeString": "contract IBondedECDSAKeep"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1815,
                        "name": "IBondedECDSAKeep",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11428,
                        "src": "1704:16:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                          "typeString": "contract IBondedECDSAKeep"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1821,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1818,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1802,
                          "src": "1746:2:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1819,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keepAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3858,
                        "src": "1746:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1817,
                      "name": "IBondedECDSAKeep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11428,
                      "src": "1729:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IBondedECDSAKeep_$11428_$",
                        "typeString": "type(contract IBondedECDSAKeep)"
                      }
                    },
                    "id": 1820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1729:32:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                      "typeString": "contract IBondedECDSAKeep"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1704:57:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1825,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1804,
                        "src": "1798:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1826,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1806,
                        "src": "1802:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1827,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1808,
                        "src": "1806:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1828,
                        "name": "_signedDigest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1810,
                        "src": "1810:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1829,
                        "name": "_preimage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1812,
                        "src": "1825:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1822,
                        "name": "_keep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "1771:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                          "typeString": "contract IBondedECDSAKeep"
                        }
                      },
                      "id": 1824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "submitSignatureFraud",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11424,
                      "src": "1771:26:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (uint8,bytes32,bytes32,bytes32,bytes memory) external returns (bool)"
                      }
                    },
                    "id": 1830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1771:64:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1831,
                  "nodeType": "ExpressionStatement",
                  "src": "1771:64:4"
                }
              ]
            },
            "documentation": "@notice Notifies the keep contract of fraud. Reverts if not fraud.\n @dev Calls out to the keep contract. this could get expensive if preimage\n      is large.\n @param  _d Deposit storage pointer.\n @param  _v Signature recovery value.\n @param  _r Signature R value.\n @param  _s Signature S value.\n @param _signedDigest The digest signed by the signature vrs tuple.\n @param _preimage The sha256 preimage of the digest.",
            "id": 1833,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "submitSignatureFraud",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1802,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1528:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1801,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "1528:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1804,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1569:8:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1803,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1569:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1806,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1587:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1805,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1587:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1808,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1607:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1807,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1607:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1810,
                  "name": "_signedDigest",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1627:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1809,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1627:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1812,
                  "name": "_preimage",
                  "nodeType": "VariableDeclaration",
                  "scope": 1833,
                  "src": "1658:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1811,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1658:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1518:168:4"
            },
            "returnParameters": {
              "id": 1814,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1694:0:4"
            },
            "scope": 2330,
            "src": "1489:353:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1873,
              "nodeType": "Block",
              "src": "2224:418:4",
              "statements": [
                {
                  "assignments": [
                    1841
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1841,
                      "name": "_satoshiPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 1873,
                      "src": "2279:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1840,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2279:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1845,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1842,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1835,
                        "src": "2303:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1843,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fetchBitcoinPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4484,
                      "src": "2303:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 1844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2303:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2279:46:4"
                },
                {
                  "assignments": [
                    1847
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1847,
                      "name": "_lotSizeSatoshis",
                      "nodeType": "VariableDeclaration",
                      "scope": 1873,
                      "src": "2335:23:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 1846,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "2335:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1850,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1848,
                      "name": "_d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1835,
                      "src": "2361:2:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                        "typeString": "struct DepositUtils.Deposit storage pointer"
                      }
                    },
                    "id": 1849,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "lotSizeSatoshis",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3838,
                    "src": "2361:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2335:44:4"
                },
                {
                  "assignments": [
                    1852
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1852,
                      "name": "_lotValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 1873,
                      "src": "2389:17:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1851,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2389:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1857,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1855,
                        "name": "_satoshiPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1841,
                        "src": "2430:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1853,
                        "name": "_lotSizeSatoshis",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1847,
                        "src": "2409:16:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 1854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16808,
                      "src": "2409:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2409:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2389:55:4"
                },
                {
                  "assignments": [
                    1859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1859,
                      "name": "_bondValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 1873,
                      "src": "2497:18:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2497:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1863,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1860,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1835,
                        "src": "2518:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1861,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fetchBondAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4503,
                      "src": "2518:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 1862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2518:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2497:41:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1869,
                            "name": "_lotValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1852,
                            "src": "2624:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030",
                                "id": 1866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2615:3:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "value": "100"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1864,
                                "name": "_bondValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1859,
                                "src": "2600:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16808,
                              "src": "2600:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2600:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16833,
                          "src": "2600:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2600:34:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 1871,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2599:36:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1839,
                  "id": 1872,
                  "nodeType": "Return",
                  "src": "2592:43:4"
                }
              ]
            },
            "documentation": "@notice     Determines the collateralization percentage of the signing group.\n @dev        Compares the bond value and lot value.\n @param _d   Deposit storage pointer.\n @return     Collateralization percentage as uint.",
            "id": 1874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "collateralizationPercentage",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1835,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1874,
                  "src": "2133:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1834,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2133:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2132:33:4"
            },
            "returnParameters": {
              "id": 1839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1838,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1874,
                  "src": "2211:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1837,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2211:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2210:9:4"
            },
            "scope": 2330,
            "src": "2096:546:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1956,
              "nodeType": "Block",
              "src": "3310:861:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1884,
                        "name": "_wasFraud",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1878,
                        "src": "3345:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1881,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "3320:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1883,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logStartedLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5354,
                      "src": "3320:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_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": 1885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3320:35:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1886,
                  "nodeType": "ExpressionStatement",
                  "src": "3320:35:4"
                },
                {
                  "assignments": [
                    1888
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1888,
                      "name": "seized",
                      "nodeType": "VariableDeclaration",
                      "scope": 1956,
                      "src": "3366:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1887,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3366:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1892,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1889,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "3383:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1890,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "seizeSignerBonds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4698,
                      "src": "3383:19:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                      }
                    },
                    "id": 1891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3383:21:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3366:38:4"
                },
                {
                  "assignments": [
                    1894
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1894,
                      "name": "redeemerAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 1956,
                      "src": "3414:23:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1893,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3414:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1897,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1895,
                      "name": "_d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1876,
                      "src": "3440:2:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                        "typeString": "struct DepositUtils.Deposit storage pointer"
                      }
                    },
                    "id": 1896,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "redeemerAddress",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3868,
                    "src": "3440:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3414:44:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1898,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "3515:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1900,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redemptionTeardown",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4636,
                      "src": "3515:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3515:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1902,
                  "nodeType": "ExpressionStatement",
                  "src": "3515:23:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1903,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1876,
                          "src": "3703:2:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1904,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "inRedemption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3361,
                        "src": "3703:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                          "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                        }
                      },
                      "id": 1905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3703:17:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1906,
                      "name": "_wasFraud",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1878,
                      "src": "3724:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3703:30:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1927,
                  "nodeType": "IfStatement",
                  "src": "3699:189:4",
                  "trueBody": {
                    "id": 1926,
                    "nodeType": "Block",
                    "src": "3735:153:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1908,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "3749:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1910,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setLiquidated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3777,
                            "src": "3749:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                            }
                          },
                          "id": 1911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3749:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1912,
                        "nodeType": "ExpressionStatement",
                        "src": "3749:18:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1916,
                              "name": "redeemerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1894,
                              "src": "3801:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1917,
                              "name": "seized",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1888,
                              "src": "3818:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1913,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "3781:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1915,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "enableWithdrawal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4722,
                            "src": "3781:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                            }
                          },
                          "id": 1918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3781:44:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1919,
                        "nodeType": "ExpressionStatement",
                        "src": "3781:44:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1920,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "3839:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1922,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "logLiquidated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5397,
                            "src": "3839:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                            }
                          },
                          "id": 1923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3839:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1924,
                        "nodeType": "ExpressionStatement",
                        "src": "3839:18:4"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1880,
                        "id": 1925,
                        "nodeType": "Return",
                        "src": "3871:7:4"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1928,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "3898:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1930,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidationInitiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3856,
                      "src": "3898:23:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1931,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18360,
                        "src": "3924:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3924:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "3898:36:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 1934,
                  "nodeType": "ExpressionStatement",
                  "src": "3898:36:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1935,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1876,
                        "src": "3944:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1937,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidationInitiated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3852,
                      "src": "3944:23:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1938,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "3970:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1939,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3970:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3944:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1941,
                  "nodeType": "ExpressionStatement",
                  "src": "3944:41:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1942,
                    "name": "_wasFraud",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1878,
                    "src": "4035:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1954,
                    "nodeType": "Block",
                    "src": "4111:54:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1949,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "4125:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1951,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setLiquidationInProgress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3762,
                            "src": "4125:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                            }
                          },
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4125:29:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1953,
                        "nodeType": "ExpressionStatement",
                        "src": "4125:29:4"
                      }
                    ]
                  },
                  "id": 1955,
                  "nodeType": "IfStatement",
                  "src": "4031:134:4",
                  "trueBody": {
                    "id": 1948,
                    "nodeType": "Block",
                    "src": "4046:59:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1943,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1876,
                              "src": "4060:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1945,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setFraudLiquidationInProgress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3747,
                            "src": "4060:32:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                            }
                          },
                          "id": 1946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4060:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1947,
                        "nodeType": "ExpressionStatement",
                        "src": "4060:34:4"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev              Starts signer liquidation by seizing signer bonds.\n                   If the deposit is currently being redeemed, the redeemer\n                   receives the full bond value; otherwise, a falling price auction\n                   begins to buy 1 TBTC in exchange for a portion of the seized bonds;\n                   see purchaseSignerBondsAtAuction().\n @param _wasFraud  True if liquidation is being started due to fraud, false if for any other reason.\n @param _d         Deposit storage pointer.",
            "id": 1957,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "startLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1876,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1957,
                  "src": "3240:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1875,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3240:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1878,
                  "name": "_wasFraud",
                  "nodeType": "VariableDeclaration",
                  "scope": 1957,
                  "src": "3273:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1877,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3273:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3239:49:4"
            },
            "returnParameters": {
              "id": 1880,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3310:0:4"
            },
            "scope": 2330,
            "src": "3214:957:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2010,
              "nodeType": "Block",
              "src": "4932:430:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5007:15:4",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1973,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1959,
                              "src": "5008:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "inFunding",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3311,
                            "src": "5008:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                            }
                          },
                          "id": 1975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5008:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5573652070726f7669646546756e64696e674543445341467261756450726f6f6620696e7374656164",
                        "id": 1977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5024:43:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5ac593fe1995561da008aac1ec0002bfdcc7f4cf986ecab305647a66664b8e7a",
                          "typeString": "literal_string \"Use provideFundingECDSAFraudProof instead\""
                        },
                        "value": "Use provideFundingECDSAFraudProof instead"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5ac593fe1995561da008aac1ec0002bfdcc7f4cf986ecab305647a66664b8e7a",
                          "typeString": "literal_string \"Use provideFundingECDSAFraudProof instead\""
                        }
                      ],
                      "id": 1972,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "4999:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4999:69:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "4999:69:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5099:25:4",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1981,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1959,
                              "src": "5100:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1982,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "inSignerLiquidation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3336,
                            "src": "5100:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                            }
                          },
                          "id": 1983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5100:24:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5369676e6572206c69717569646174696f6e20616c726561647920696e2070726f6772657373",
                        "id": 1985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5138:40:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_52ecb9707b9e5311cb5ac809b6ea6aa3bb6b1409f5dc192f5ca825f6ae556047",
                          "typeString": "literal_string \"Signer liquidation already in progress\""
                        },
                        "value": "Signer liquidation already in progress"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_52ecb9707b9e5311cb5ac809b6ea6aa3bb6b1409f5dc192f5ca825f6ae556047",
                          "typeString": "literal_string \"Signer liquidation already in progress\""
                        }
                      ],
                      "id": 1980,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5078:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5078:110:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1987,
                  "nodeType": "ExpressionStatement",
                  "src": "5078:110:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5206:16:4",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1989,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1959,
                              "src": "5207:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1990,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "inEndState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3394,
                            "src": "5207:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                            }
                          },
                          "id": 1991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5207:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e7472616374206861732068616c746564",
                        "id": 1993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5224:21:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39692be660abb58e6fabf1fe4b4c667849345165688e7236598e0b010d437f2c",
                          "typeString": "literal_string \"Contract has halted\""
                        },
                        "value": "Contract has halted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39692be660abb58e6fabf1fe4b4c667849345165688e7236598e0b010d437f2c",
                          "typeString": "literal_string \"Contract has halted\""
                        }
                      ],
                      "id": 1988,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5198:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5198:48:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1995,
                  "nodeType": "ExpressionStatement",
                  "src": "5198:48:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1997,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1959,
                        "src": "5277:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1998,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1961,
                        "src": "5281:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1999,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1963,
                        "src": "5285:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2000,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1965,
                        "src": "5289:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2001,
                        "name": "_signedDigest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1967,
                        "src": "5293:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2002,
                        "name": "_preimage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1969,
                        "src": "5308:9:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1996,
                      "name": "submitSignatureFraud",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1833,
                      "src": "5256:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,uint8,bytes32,bytes32,bytes32,bytes memory)"
                      }
                    },
                    "id": 2003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5256:62:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2004,
                  "nodeType": "ExpressionStatement",
                  "src": "5256:62:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2006,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1959,
                        "src": "5346:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2007,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5350:4:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2005,
                      "name": "startLiquidation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1957,
                      "src": "5329:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bool)"
                      }
                    },
                    "id": 2008,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5329:26:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2009,
                  "nodeType": "ExpressionStatement",
                  "src": "5329:26:4"
                }
              ]
            },
            "documentation": "@notice                 Anyone can provide a signature that was not requested to prove fraud.\n @dev                    Calls out to the keep to verify if there was fraud.\n @param  _d              Deposit storage pointer.\n @param  _v              Signature recovery value.\n @param  _r              Signature R value.\n @param  _s              Signature S value.\n @param _signedDigest    The digest signed by the signature vrs tuple.\n @param _preimage        The sha256 preimage of the digest.",
            "id": 2011,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "provideECDSAFraudProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1959,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4766:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1958,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4766:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1961,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4807:8:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1960,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4807:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1963,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4825:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1962,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4825:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1965,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4845:10:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4845:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1967,
                  "name": "_signedDigest",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4865:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1966,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4865:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1969,
                  "name": "_preimage",
                  "nodeType": "VariableDeclaration",
                  "scope": 2011,
                  "src": "4896:22:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1968,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4896:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4756:168:4"
            },
            "returnParameters": {
              "id": 1971,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4932:0:4"
            },
            "scope": 2330,
            "src": "4725:637:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2195,
              "nodeType": "Block",
              "src": "5730:2455:4",
              "statements": [
                {
                  "assignments": [
                    2017
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2017,
                      "name": "_wasFraud",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "5740:14:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2016,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5740:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2021,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2018,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "5757:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2019,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inFraudLiquidationInProgress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3580,
                      "src": "5757:31:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                      }
                    },
                    "id": 2020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5757:33:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5740:50:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2023,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2013,
                            "src": "5808:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2024,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inSignerLiquidation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3336,
                          "src": "5808:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 2025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5808:24:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f206163746976652061756374696f6e",
                        "id": 2026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5834:19:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92166f1beeb8af42fb4df5d3349f886768dfa1eda75455d8ed684783c4c9eef1",
                          "typeString": "literal_string \"No active auction\""
                        },
                        "value": "No active auction"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92166f1beeb8af42fb4df5d3349f886768dfa1eda75455d8ed684783c4c9eef1",
                          "typeString": "literal_string \"No active auction\""
                        }
                      ],
                      "id": 2022,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5800:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5800:54:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2028,
                  "nodeType": "ExpressionStatement",
                  "src": "5800:54:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2029,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "5865:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2031,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setLiquidated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3777,
                      "src": "5865:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5865:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2033,
                  "nodeType": "ExpressionStatement",
                  "src": "5865:18:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2034,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "5893:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logLiquidated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5397,
                      "src": "5893:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5893:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2038,
                  "nodeType": "ExpressionStatement",
                  "src": "5893:18:4"
                },
                {
                  "assignments": [
                    2040
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2040,
                      "name": "tbtcRecipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "6232:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2039,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6232:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2043,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2041,
                      "name": "_d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "6256:2:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                        "typeString": "struct DepositUtils.Deposit storage pointer"
                      }
                    },
                    "id": 2042,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "redeemerAddress",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3868,
                    "src": "6256:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6232:42:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2044,
                      "name": "tbtcRecipient",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2040,
                      "src": "6288:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6313:1:4",
                          "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": 2045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6305:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6305:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6288:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2056,
                  "nodeType": "IfStatement",
                  "src": "6284:91:4",
                  "trueBody": {
                    "id": 2055,
                    "nodeType": "Block",
                    "src": "6317:58:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2049,
                            "name": "tbtcRecipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2040,
                            "src": "6331:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2050,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2013,
                                "src": "6347:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 2051,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "depositOwner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4604,
                              "src": "6347:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_address_payable_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                                "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                              }
                            },
                            "id": 2052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6347:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6331:33:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2054,
                        "nodeType": "ExpressionStatement",
                        "src": "6331:33:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2058
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2058,
                      "name": "lotSizeTbtc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "6384:19:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2057,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6384:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2062,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2059,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "6406:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2060,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lotSizeTbtc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4356,
                      "src": "6406:14:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6406:16:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6384:38:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2067,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "6477:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6477:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2064,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2013,
                                "src": "6454:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 2065,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tbtcToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3830,
                              "src": "6454:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 2066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17007,
                            "src": "6454:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6454:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2070,
                          "name": "lotSizeTbtc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2058,
                          "src": "6492:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6454:49:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f7420656e6f756768205442544320746f20636f766572206f75747374616e64696e672064656274",
                        "id": 2072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6517:43:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_12907e6f7579715899a624f6b2c8b73aa343e544e2f71d23779df1f006c42363",
                          "typeString": "literal_string \"Not enough TBTC to cover outstanding debt\""
                        },
                        "value": "Not enough TBTC to cover outstanding debt"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_12907e6f7579715899a624f6b2c8b73aa343e544e2f71d23779df1f006c42363",
                          "typeString": "literal_string \"Not enough TBTC to cover outstanding debt\""
                        }
                      ],
                      "id": 2063,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "6433:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6433:137:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2074,
                  "nodeType": "ExpressionStatement",
                  "src": "6433:137:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2075,
                      "name": "tbtcRecipient",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2040,
                      "src": "6585:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2076,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "6602:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2077,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "vendingMachineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3836,
                      "src": "6602:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6585:41:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2101,
                    "nodeType": "Block",
                    "src": "6742:90:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2095,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "6782:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6782:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2097,
                              "name": "tbtcRecipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2040,
                              "src": "6794:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2098,
                              "name": "lotSizeTbtc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2058,
                              "src": "6809:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2090,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2013,
                                "src": "6756:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 2093,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tbtcToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3830,
                              "src": "6756:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 2094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17096,
                            "src": "6756:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6756:65:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2100,
                        "nodeType": "ExpressionStatement",
                        "src": "6756:65:4"
                      }
                    ]
                  },
                  "id": 2102,
                  "nodeType": "IfStatement",
                  "src": "6581:251:4",
                  "trueBody": {
                    "id": 2089,
                    "nodeType": "Block",
                    "src": "6628:108:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2084,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "6664:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6664:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2086,
                              "name": "lotSizeTbtc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2058,
                              "src": "6676:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2079,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2013,
                                "src": "6642:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 2082,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tbtcToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3830,
                              "src": "6642:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 2083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8512,
                            "src": "6642:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6642:46:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2088,
                        "nodeType": "ExpressionStatement",
                        "src": "6642:46:4"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2104,
                      "name": "valueToDistribute",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "6887:25:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2103,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6887:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2108,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2105,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "6915:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2106,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "auctionValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4340,
                      "src": "6915:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6915:17:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6887:45:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2112,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "6962:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2113,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6962:10:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "valueToDistribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2104,
                        "src": "6974:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2109,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "6942:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2111,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enableWithdrawal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4722,
                      "src": "6942:19:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                      }
                    },
                    "id": 2115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6942:50:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2116,
                  "nodeType": "ExpressionStatement",
                  "src": "6942:50:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2117,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2013,
                        "src": "7064:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2119,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "distributeFeeRebate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4843,
                      "src": "7064:22:4",
                      "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": 2120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7064:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2121,
                  "nodeType": "ExpressionStatement",
                  "src": "7064:24:4"
                },
                {
                  "assignments": [
                    2123
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2123,
                      "name": "contractEthBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "7417:26:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2122,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7417:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2128,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2125,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18436,
                          "src": "7454:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DepositLiquidation_$2330",
                            "typeString": "library DepositLiquidation"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DepositLiquidation_$2330",
                            "typeString": "library DepositLiquidation"
                          }
                        ],
                        "id": 2124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7446:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7446:13:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "balance",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "7446:21:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7417:50:4"
                },
                {
                  "assignments": [
                    2130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2130,
                      "name": "initiator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2195,
                      "src": "7477:25:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 2129,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7477:15:4",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2133,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2131,
                      "name": "_d",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "7505:2:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                        "typeString": "struct DepositUtils.Deposit storage pointer"
                      }
                    },
                    "id": 2132,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "liquidationInitiator",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3856,
                    "src": "7505:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7477:51:4"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "id": 2138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2134,
                      "name": "initiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2130,
                      "src": "7543:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7564:1:4",
                          "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": 2135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7556:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7556:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "7543:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2146,
                  "nodeType": "IfStatement",
                  "src": "7539:81:4",
                  "trueBody": {
                    "id": 2145,
                    "nodeType": "Block",
                    "src": "7568:52:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2139,
                            "name": "initiator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2130,
                            "src": "7582:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "307864656164",
                                "id": 2141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7602:6:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_57005_by_1",
                                  "typeString": "int_const 57005"
                                },
                                "value": "0xdead"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_57005_by_1",
                                  "typeString": "int_const 57005"
                                }
                              ],
                              "id": 2140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7594:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 2142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7594:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "7582:27:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 2144,
                        "nodeType": "ExpressionStatement",
                        "src": "7582:27:4"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2147,
                      "name": "contractEthBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2123,
                      "src": "7633:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2148,
                        "name": "valueToDistribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2104,
                        "src": "7654:17:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7674:1:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "7654:21:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7633:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2194,
                  "nodeType": "IfStatement",
                  "src": "7629:550:4",
                  "trueBody": {
                    "id": 2193,
                    "nodeType": "Block",
                    "src": "7677:502:4",
                    "statements": [
                      {
                        "assignments": [
                          2153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2153,
                            "name": "remainingUnallocated",
                            "nodeType": "VariableDeclaration",
                            "scope": 2193,
                            "src": "7691:28:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2152,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7691:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2158,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2156,
                              "name": "valueToDistribute",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2104,
                              "src": "7761:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2154,
                              "name": "contractEthBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2123,
                              "src": "7738:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16774,
                            "src": "7738:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7738:41:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7691:88:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 2159,
                          "name": "_wasFraud",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2017,
                          "src": "7797:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2191,
                          "nodeType": "Block",
                          "src": "7899:270:4",
                          "statements": [
                            {
                              "assignments": [
                                2169
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2169,
                                  "name": "split",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2191,
                                  "src": "7982:13:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2168,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7982:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2174,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8023:1:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2170,
                                    "name": "remainingUnallocated",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2153,
                                    "src": "7998:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "div",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16833,
                                  "src": "7998:24:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7998:27:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7982:43:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2178,
                                    "name": "split",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2169,
                                    "src": "8067:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2175,
                                    "name": "_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2013,
                                    "src": "8043:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                      "typeString": "struct DepositUtils.Deposit storage pointer"
                                    }
                                  },
                                  "id": 2177,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pushFundsToKeepGroup",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4882,
                                  "src": "8043:23:4",
                                  "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": 2179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8043:30:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2180,
                              "nodeType": "ExpressionStatement",
                              "src": "8043:30:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2184,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2130,
                                    "src": "8111:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2187,
                                        "name": "split",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2169,
                                        "src": "8147:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2185,
                                        "name": "remainingUnallocated",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2153,
                                        "src": "8122:20:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 16774,
                                      "src": "8122:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8122:31:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2181,
                                    "name": "_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2013,
                                    "src": "8091:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                      "typeString": "struct DepositUtils.Deposit storage pointer"
                                    }
                                  },
                                  "id": 2183,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "enableWithdrawal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4722,
                                  "src": "8091:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                                    "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                  }
                                },
                                "id": 2189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8091:63:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2190,
                              "nodeType": "ExpressionStatement",
                              "src": "8091:63:4"
                            }
                          ]
                        },
                        "id": 2192,
                        "nodeType": "IfStatement",
                        "src": "7793:376:4",
                        "trueBody": {
                          "id": 2167,
                          "nodeType": "Block",
                          "src": "7808:85:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2163,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2130,
                                    "src": "7846:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2164,
                                    "name": "remainingUnallocated",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2153,
                                    "src": "7857:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2160,
                                    "name": "_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2013,
                                    "src": "7826:2:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                      "typeString": "struct DepositUtils.Deposit storage pointer"
                                    }
                                  },
                                  "id": 2162,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "enableWithdrawal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4722,
                                  "src": "7826:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                                    "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                  }
                                },
                                "id": 2165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7826:52:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2166,
                              "nodeType": "ExpressionStatement",
                              "src": "7826:52:4"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice     Closes an auction and purchases the signer bonds. Payout to buyer, funder, then signers if not fraud.\n @dev        For interface, reading auctionValue will give a past value. the current is better.\n @param  _d  Deposit storage pointer.",
            "id": 2196,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "purchaseSignerBondsAtAuction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2014,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2013,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2196,
                  "src": "5676:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2012,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5676:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5675:33:4"
            },
            "returnParameters": {
              "id": 2015,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5730:0:4"
            },
            "scope": 2330,
            "src": "5638:2547:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2235,
              "nodeType": "Block",
              "src": "8449:376:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2202,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2198,
                            "src": "8467:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2203,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inActive",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3500,
                          "src": "8467:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 2204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8467:13:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e206f6e6c7920636f7572746573792063616c6c2066726f6d20616374697665207374617465",
                        "id": 2205,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8482:42:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_55a6bedb19936d3678a04e935ca0ec62549ae271b40cc738f99f774b65cd959d",
                          "typeString": "literal_string \"Can only courtesy call from active state\""
                        },
                        "value": "Can only courtesy call from active state"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_55a6bedb19936d3678a04e935ca0ec62549ae271b40cc738f99f774b65cd959d",
                          "typeString": "literal_string \"Can only courtesy call from active state\""
                        }
                      ],
                      "id": 2201,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8459:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8459:66:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2207,
                  "nodeType": "ExpressionStatement",
                  "src": "8459:66:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2210,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2198,
                              "src": "8584:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            ],
                            "id": 2209,
                            "name": "collateralizationPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1874,
                            "src": "8556:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 2211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8556:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2212,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2198,
                            "src": "8606:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2213,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "undercollateralizedThresholdPercent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3846,
                          "src": "8606:38:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "src": "8556:88:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5369676e65727320686176652073756666696369656e7420636f6c6c61746572616c",
                        "id": 2215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8658:36:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4d56eed7f1ed541f18569537d912519876a16a7ac35388487ea8030b138c48b4",
                          "typeString": "literal_string \"Signers have sufficient collateral\""
                        },
                        "value": "Signers have sufficient collateral"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4d56eed7f1ed541f18569537d912519876a16a7ac35388487ea8030b138c48b4",
                          "typeString": "literal_string \"Signers have sufficient collateral\""
                        }
                      ],
                      "id": 2208,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8535:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8535:169:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2217,
                  "nodeType": "ExpressionStatement",
                  "src": "8535:169:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2218,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "8714:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2220,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "courtesyCallInitiated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3854,
                      "src": "8714:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2221,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "8741:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8741:15:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8714:42:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2224,
                  "nodeType": "ExpressionStatement",
                  "src": "8714:42:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2225,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "8766:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2227,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setCourtesyCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3732,
                      "src": "8766:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8766:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2229,
                  "nodeType": "ExpressionStatement",
                  "src": "8766:20:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2230,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "8796:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2232,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logCourtesyCalled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5331,
                      "src": "8796:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8796:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2234,
                  "nodeType": "ExpressionStatement",
                  "src": "8796:22:4"
                }
              ]
            },
            "documentation": "@notice     Notify the contract that the signers are undercollateralized.\n @dev        Calls out to the system for oracle info.\n @param  _d  Deposit storage pointer.",
            "id": 2236,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2198,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2236,
                  "src": "8407:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2197,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "8407:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8406:33:4"
            },
            "returnParameters": {
              "id": 2200,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8449:0:4"
            },
            "scope": 2330,
            "src": "8379:446:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2268,
              "nodeType": "Block",
              "src": "9094:321:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2242,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2238,
                            "src": "9112:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2243,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inCourtesyCall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3564,
                          "src": "9112:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 2244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9112:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f742063757272656e746c7920696e20636f7572746573792063616c6c",
                        "id": 2245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9133:32:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0b4aa5e7df6c543c911873291b47880a0ba90fd37b053a680c8d078b6726fbca",
                          "typeString": "literal_string \"Not currently in courtesy call\""
                        },
                        "value": "Not currently in courtesy call"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0b4aa5e7df6c543c911873291b47880a0ba90fd37b053a680c8d078b6726fbca",
                          "typeString": "literal_string \"Not currently in courtesy call\""
                        }
                      ],
                      "id": 2241,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9104:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9104:62:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2247,
                  "nodeType": "ExpressionStatement",
                  "src": "9104:62:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2250,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "9225:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            ],
                            "id": 2249,
                            "name": "collateralizationPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1874,
                            "src": "9197:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 2251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9197:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2252,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2238,
                            "src": "9248:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2253,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "undercollateralizedThresholdPercent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3846,
                          "src": "9248:38:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "src": "9197:89:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206973207374696c6c20756e646572636f6c6c61746572616c697a6564",
                        "id": 2255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9300:38:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_156f6ec553f8a7fda09075901b2422538090da076a98b996e084e2354e780a11",
                          "typeString": "literal_string \"Deposit is still undercollateralized\""
                        },
                        "value": "Deposit is still undercollateralized"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_156f6ec553f8a7fda09075901b2422538090da076a98b996e084e2354e780a11",
                          "typeString": "literal_string \"Deposit is still undercollateralized\""
                        }
                      ],
                      "id": 2248,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9176:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9176:172:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2257,
                  "nodeType": "ExpressionStatement",
                  "src": "9176:172:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2258,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2238,
                        "src": "9358:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2260,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3672,
                      "src": "9358:12:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9358:14:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2262,
                  "nodeType": "ExpressionStatement",
                  "src": "9358:14:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2263,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2238,
                        "src": "9382:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 2265,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logExitedCourtesyCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5417,
                      "src": "9382:24:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 2266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9382:26:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2267,
                  "nodeType": "ExpressionStatement",
                  "src": "9382:26:4"
                }
              ]
            },
            "documentation": "@notice     Goes from courtesy call to active.\n @dev        Only callable if collateral is sufficient and the deposit is not expiring.\n @param  _d  Deposit storage pointer.",
            "id": 2269,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exitCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2239,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2238,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2269,
                  "src": "9052:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2237,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "9052:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9051:33:4"
            },
            "returnParameters": {
              "id": 2240,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9094:0:4"
            },
            "scope": 2330,
            "src": "9026:389:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2296,
              "nodeType": "Block",
              "src": "9711:347:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2275,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "9742:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2276,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inRedeemableState",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3419,
                          "src": "9742:20:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 2277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9742:22:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206e6f7420696e20616374697665206f7220636f7572746573792063616c6c",
                        "id": 2278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9778:40:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_115e1e30d3f210a65518ccb02244794c3f1481bb8228eb9918b8863f4fbffcae",
                          "typeString": "literal_string \"Deposit not in active or courtesy call\""
                        },
                        "value": "Deposit not in active or courtesy call"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_115e1e30d3f210a65518ccb02244794c3f1481bb8228eb9918b8863f4fbffcae",
                          "typeString": "literal_string \"Deposit not in active or courtesy call\""
                        }
                      ],
                      "id": 2274,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9721:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9721:107:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2280,
                  "nodeType": "ExpressionStatement",
                  "src": "9721:107:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "9887:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            ],
                            "id": 2282,
                            "name": "collateralizationPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1874,
                            "src": "9859:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 2284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9859:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2285,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "9909:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2286,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "severelyUndercollateralizedThresholdPercent",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3848,
                          "src": "9909:46:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "src": "9859:96:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206861732073756666696369656e7420636f6c6c61746572616c",
                        "id": 2288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9969:35:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c88b5cff93ef45f165f3518f2291d4c4e7b615f79d6dbcfceaded346bad9a2dc",
                          "typeString": "literal_string \"Deposit has sufficient collateral\""
                        },
                        "value": "Deposit has sufficient collateral"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c88b5cff93ef45f165f3518f2291d4c4e7b615f79d6dbcfceaded346bad9a2dc",
                          "typeString": "literal_string \"Deposit has sufficient collateral\""
                        }
                      ],
                      "id": 2281,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9838:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9838:176:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2290,
                  "nodeType": "ExpressionStatement",
                  "src": "9838:176:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2292,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2271,
                        "src": "10041:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10045:5:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2291,
                      "name": "startLiquidation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1957,
                      "src": "10024:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bool)"
                      }
                    },
                    "id": 2294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10024:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2295,
                  "nodeType": "ExpressionStatement",
                  "src": "10024:27:4"
                }
              ]
            },
            "documentation": "@notice     Notify the contract that the signers are undercollateralized.\n @dev        Calls out to the system for oracle info.\n @param  _d  Deposit storage pointer.",
            "id": 2297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyUndercollateralizedLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2271,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2297,
                  "src": "9664:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2270,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "9664:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9654:47:4"
            },
            "returnParameters": {
              "id": 2273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9711:0:4"
            },
            "scope": 2330,
            "src": "9609:449:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2328,
              "nodeType": "Block",
              "src": "10346:344:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2303,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2299,
                            "src": "10364:2:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 2304,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inCourtesyCall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3564,
                          "src": "10364:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 2305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10364:19:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f7420696e206120636f7572746573792063616c6c20706572696f64",
                        "id": 2306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10385:31:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8ea2f2f19e303b0653d43dfad58a51313bf76fba7989c697d30bd376c8090e6a",
                          "typeString": "literal_string \"Not in a courtesy call period\""
                        },
                        "value": "Not in a courtesy call period"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8ea2f2f19e303b0653d43dfad58a51313bf76fba7989c697d30bd376c8090e6a",
                          "typeString": "literal_string \"Not in a courtesy call period\""
                        }
                      ],
                      "id": 2302,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "10356:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10356:61:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2308,
                  "nodeType": "ExpressionStatement",
                  "src": "10356:61:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2310,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18350,
                            "src": "10448:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10448:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2315,
                                  "name": "TBTCConstants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6757,
                                  "src": "10533:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TBTCConstants_$6757_$",
                                    "typeString": "type(library TBTCConstants)"
                                  }
                                },
                                "id": 2316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getCourtesyCallTimeout",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6748,
                                "src": "10533:36:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 2317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10533:38:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2312,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2299,
                                "src": "10483:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 2313,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "courtesyCallInitiated",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3854,
                              "src": "10483:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16749,
                            "src": "10483:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10483:106:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10448:141:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f75727465737920706572696f6420686173206e6f7420656c6170736564",
                        "id": 2320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10603:33:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_243c18d3532b5f66e3b93067b5c7846191fec4f4139b2644d9b3ccf2cc448d51",
                          "typeString": "literal_string \"Courtesy period has not elapsed\""
                        },
                        "value": "Courtesy period has not elapsed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_243c18d3532b5f66e3b93067b5c7846191fec4f4139b2644d9b3ccf2cc448d51",
                          "typeString": "literal_string \"Courtesy period has not elapsed\""
                        }
                      ],
                      "id": 2309,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "10427:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10427:219:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2322,
                  "nodeType": "ExpressionStatement",
                  "src": "10427:219:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2324,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2299,
                        "src": "10673:2:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10677:5:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2323,
                      "name": "startLiquidation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1957,
                      "src": "10656:16:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bool)"
                      }
                    },
                    "id": 2326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10656:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2327,
                  "nodeType": "ExpressionStatement",
                  "src": "10656:27:4"
                }
              ]
            },
            "documentation": "@notice     Notifies the contract that the courtesy period has elapsed.\n @dev        This is treated as an abort, rather than fraud.\n @param  _d  Deposit storage pointer.",
            "id": 2329,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyCourtesyCallExpired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2299,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "10292:31:4",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2298,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "10292:20:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10291:33:4"
            },
            "returnParameters": {
              "id": 2301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10346:0:4"
            },
            "scope": 2330,
            "src": "10257:433:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2331,
        "src": "692:10000:4"
      }
    ],
    "src": "0:10693:4"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol",
      "exportedSymbols": {
        "DepositLiquidation": [
          2330
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 1759,
        "name": "PragmaDirective",
        "src": "0:23:4"
      },
      {
        "attributes": {
          "SourceUnit": 13217,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
          "file": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1760,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1761,
        "name": "ImportDirective",
        "src": "25:74:4"
      },
      {
        "attributes": {
          "SourceUnit": 13433,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
          "file": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1762,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1763,
        "name": "ImportDirective",
        "src": "100:74:4"
      },
      {
        "attributes": {
          "SourceUnit": 11429,
          "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1764,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1765,
        "name": "ImportDirective",
        "src": "175:99:4"
      },
      {
        "attributes": {
          "SourceUnit": 16856,
          "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1766,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1767,
        "name": "ImportDirective",
        "src": "275:75:4"
      },
      {
        "attributes": {
          "SourceUnit": 3779,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
          "file": "./DepositStates.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1768,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1769,
        "name": "ImportDirective",
        "src": "351:50:4"
      },
      {
        "attributes": {
          "SourceUnit": 5104,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
          "file": "./DepositUtils.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1770,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1771,
        "name": "ImportDirective",
        "src": "402:48:4"
      },
      {
        "attributes": {
          "SourceUnit": 6758,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
          "file": "../system/TBTCConstants.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1772,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1773,
        "name": "ImportDirective",
        "src": "451:58:4"
      },
      {
        "attributes": {
          "SourceUnit": 5419,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
          "file": "./OutsourceDepositLogging.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1774,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1775,
        "name": "ImportDirective",
        "src": "510:70:4"
      },
      {
        "attributes": {
          "SourceUnit": 8562,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
          "file": "../system/TBTCToken.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1776,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1777,
        "name": "ImportDirective",
        "src": "581:50:4"
      },
      {
        "attributes": {
          "SourceUnit": 5512,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol",
          "file": "../interfaces/ITBTCSystem.sol",
          "scope": 2331,
          "symbolAliases": [
            {
              "foreign": 1778,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1779,
        "name": "ImportDirective",
        "src": "632:58:4"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            2330
          ],
          "name": "DepositLiquidation",
          "scope": 2331
        },
        "children": [
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BTCUtils",
                  "referencedDeclaration": 13216,
                  "type": "library BTCUtils"
                },
                "id": 1780,
                "name": "UserDefinedTypeName",
                "src": "731:8:4"
              },
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 1781,
                "name": "ElementaryTypeName",
                "src": "744:5:4"
              }
            ],
            "id": 1782,
            "name": "UsingForDirective",
            "src": "725:25:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BytesLib",
                  "referencedDeclaration": 13432,
                  "type": "library BytesLib"
                },
                "id": 1783,
                "name": "UserDefinedTypeName",
                "src": "761:8:4"
              },
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 1784,
                "name": "ElementaryTypeName",
                "src": "774:5:4"
              }
            ],
            "id": 1785,
            "name": "UsingForDirective",
            "src": "755:25:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 16855,
                  "type": "library SafeMath"
                },
                "id": 1786,
                "name": "UserDefinedTypeName",
                "src": "791:8:4"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 1787,
                "name": "ElementaryTypeName",
                "src": "804:7:4"
              }
            ],
            "id": 1788,
            "name": "UsingForDirective",
            "src": "785:27:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 16855,
                  "type": "library SafeMath"
                },
                "id": 1789,
                "name": "UserDefinedTypeName",
                "src": "823:8:4"
              },
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 1790,
                "name": "ElementaryTypeName",
                "src": "836:6:4"
              }
            ],
            "id": 1791,
            "name": "UsingForDirective",
            "src": "817:26:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils",
                  "referencedDeclaration": 5103,
                  "type": "library DepositUtils"
                },
                "id": 1792,
                "name": "UserDefinedTypeName",
                "src": "855:12:4"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1793,
                "name": "UserDefinedTypeName",
                "src": "872:20:4"
              }
            ],
            "id": 1794,
            "name": "UsingForDirective",
            "src": "849:44:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositStates",
                  "referencedDeclaration": 3778,
                  "type": "library DepositStates"
                },
                "id": 1795,
                "name": "UserDefinedTypeName",
                "src": "904:13:4"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1796,
                "name": "UserDefinedTypeName",
                "src": "922:20:4"
              }
            ],
            "id": 1797,
            "name": "UsingForDirective",
            "src": "898:45:4"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "OutsourceDepositLogging",
                  "referencedDeclaration": 5418,
                  "type": "library OutsourceDepositLogging"
                },
                "id": 1798,
                "name": "UserDefinedTypeName",
                "src": "954:23:4"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1799,
                "name": "UserDefinedTypeName",
                "src": "982:20:4"
              }
            ],
            "id": 1800,
            "name": "UsingForDirective",
            "src": "948:55:4"
          },
          {
            "attributes": {
              "documentation": "@notice Notifies the keep contract of fraud. Reverts if not fraud.\n @dev Calls out to the keep contract. this could get expensive if preimage\n      is large.\n @param  _d Deposit storage pointer.\n @param  _v Signature recovery value.\n @param  _r Signature R value.\n @param  _s Signature S value.\n @param _signedDigest The digest signed by the signature vrs tuple.\n @param _preimage The sha256 preimage of the digest.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "submitSignatureFraud",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1801,
                        "name": "UserDefinedTypeName",
                        "src": "1528:20:4"
                      }
                    ],
                    "id": 1802,
                    "name": "VariableDeclaration",
                    "src": "1528:31:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_v",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 1803,
                        "name": "ElementaryTypeName",
                        "src": "1569:5:4"
                      }
                    ],
                    "id": 1804,
                    "name": "VariableDeclaration",
                    "src": "1569:8:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_r",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1805,
                        "name": "ElementaryTypeName",
                        "src": "1587:7:4"
                      }
                    ],
                    "id": 1806,
                    "name": "VariableDeclaration",
                    "src": "1587:10:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_s",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1807,
                        "name": "ElementaryTypeName",
                        "src": "1607:7:4"
                      }
                    ],
                    "id": 1808,
                    "name": "VariableDeclaration",
                    "src": "1607:10:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signedDigest",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1809,
                        "name": "ElementaryTypeName",
                        "src": "1627:7:4"
                      }
                    ],
                    "id": 1810,
                    "name": "VariableDeclaration",
                    "src": "1627:21:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_preimage",
                      "scope": 1833,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1811,
                        "name": "ElementaryTypeName",
                        "src": "1658:5:4"
                      }
                    ],
                    "id": 1812,
                    "name": "VariableDeclaration",
                    "src": "1658:22:4"
                  }
                ],
                "id": 1813,
                "name": "ParameterList",
                "src": "1518:168:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1814,
                "name": "ParameterList",
                "src": "1694:0:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1816
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_keep",
                          "scope": 1832,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IBondedECDSAKeep",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IBondedECDSAKeep",
                              "referencedDeclaration": 11428,
                              "type": "contract IBondedECDSAKeep"
                            },
                            "id": 1815,
                            "name": "UserDefinedTypeName",
                            "src": "1704:16:4"
                          }
                        ],
                        "id": 1816,
                        "name": "VariableDeclaration",
                        "src": "1704:22:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract IBondedECDSAKeep",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11428,
                              "type": "type(contract IBondedECDSAKeep)",
                              "value": "IBondedECDSAKeep"
                            },
                            "id": 1817,
                            "name": "Identifier",
                            "src": "1729:16:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "keepAddress",
                              "referencedDeclaration": 3858,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1802,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1818,
                                "name": "Identifier",
                                "src": "1746:2:4"
                              }
                            ],
                            "id": 1819,
                            "name": "MemberAccess",
                            "src": "1746:14:4"
                          }
                        ],
                        "id": 1820,
                        "name": "FunctionCall",
                        "src": "1729:32:4"
                      }
                    ],
                    "id": 1821,
                    "name": "VariableDeclarationStatement",
                    "src": "1704:57:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "submitSignatureFraud",
                              "referencedDeclaration": 11424,
                              "type": "function (uint8,bytes32,bytes32,bytes32,bytes memory) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1816,
                                  "type": "contract IBondedECDSAKeep",
                                  "value": "_keep"
                                },
                                "id": 1822,
                                "name": "Identifier",
                                "src": "1771:5:4"
                              }
                            ],
                            "id": 1824,
                            "name": "MemberAccess",
                            "src": "1771:26:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1804,
                              "type": "uint8",
                              "value": "_v"
                            },
                            "id": 1825,
                            "name": "Identifier",
                            "src": "1798:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1806,
                              "type": "bytes32",
                              "value": "_r"
                            },
                            "id": 1826,
                            "name": "Identifier",
                            "src": "1802:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1808,
                              "type": "bytes32",
                              "value": "_s"
                            },
                            "id": 1827,
                            "name": "Identifier",
                            "src": "1806:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1810,
                              "type": "bytes32",
                              "value": "_signedDigest"
                            },
                            "id": 1828,
                            "name": "Identifier",
                            "src": "1810:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1812,
                              "type": "bytes memory",
                              "value": "_preimage"
                            },
                            "id": 1829,
                            "name": "Identifier",
                            "src": "1825:9:4"
                          }
                        ],
                        "id": 1830,
                        "name": "FunctionCall",
                        "src": "1771:64:4"
                      }
                    ],
                    "id": 1831,
                    "name": "ExpressionStatement",
                    "src": "1771:64:4"
                  }
                ],
                "id": 1832,
                "name": "Block",
                "src": "1694:148:4"
              }
            ],
            "id": 1833,
            "name": "FunctionDefinition",
            "src": "1489:353:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Determines the collateralization percentage of the signing group.\n @dev        Compares the bond value and lot value.\n @param _d   Deposit storage pointer.\n @return     Collateralization percentage as uint.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "collateralizationPercentage",
              "scope": 2330,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1874,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1834,
                        "name": "UserDefinedTypeName",
                        "src": "2133:20:4"
                      }
                    ],
                    "id": 1835,
                    "name": "VariableDeclaration",
                    "src": "2133:31:4"
                  }
                ],
                "id": 1836,
                "name": "ParameterList",
                "src": "2132:33:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1874,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1837,
                        "name": "ElementaryTypeName",
                        "src": "2211:7:4"
                      }
                    ],
                    "id": 1838,
                    "name": "VariableDeclaration",
                    "src": "2211:7:4"
                  }
                ],
                "id": 1839,
                "name": "ParameterList",
                "src": "2210:9:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1841
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_satoshiPrice",
                          "scope": 1873,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1840,
                            "name": "ElementaryTypeName",
                            "src": "2279:7:4"
                          }
                        ],
                        "id": 1841,
                        "name": "VariableDeclaration",
                        "src": "2279:21:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fetchBitcoinPrice",
                              "referencedDeclaration": 4484,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1835,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1842,
                                "name": "Identifier",
                                "src": "2303:2:4"
                              }
                            ],
                            "id": 1843,
                            "name": "MemberAccess",
                            "src": "2303:20:4"
                          }
                        ],
                        "id": 1844,
                        "name": "FunctionCall",
                        "src": "2303:22:4"
                      }
                    ],
                    "id": 1845,
                    "name": "VariableDeclarationStatement",
                    "src": "2279:46:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1847
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_lotSizeSatoshis",
                          "scope": 1873,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint64",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 1846,
                            "name": "ElementaryTypeName",
                            "src": "2335:6:4"
                          }
                        ],
                        "id": 1847,
                        "name": "VariableDeclaration",
                        "src": "2335:23:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "lotSizeSatoshis",
                          "referencedDeclaration": 3838,
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1835,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1848,
                            "name": "Identifier",
                            "src": "2361:2:4"
                          }
                        ],
                        "id": 1849,
                        "name": "MemberAccess",
                        "src": "2361:18:4"
                      }
                    ],
                    "id": 1850,
                    "name": "VariableDeclarationStatement",
                    "src": "2335:44:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1852
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_lotValue",
                          "scope": 1873,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1851,
                            "name": "ElementaryTypeName",
                            "src": "2389:7:4"
                          }
                        ],
                        "id": 1852,
                        "name": "VariableDeclaration",
                        "src": "2389:17:4"
                      },
                      {
                        "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_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mul",
                              "referencedDeclaration": 16808,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1847,
                                  "type": "uint64",
                                  "value": "_lotSizeSatoshis"
                                },
                                "id": 1853,
                                "name": "Identifier",
                                "src": "2409:16:4"
                              }
                            ],
                            "id": 1854,
                            "name": "MemberAccess",
                            "src": "2409:20:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1841,
                              "type": "uint256",
                              "value": "_satoshiPrice"
                            },
                            "id": 1855,
                            "name": "Identifier",
                            "src": "2430:13:4"
                          }
                        ],
                        "id": 1856,
                        "name": "FunctionCall",
                        "src": "2409:35:4"
                      }
                    ],
                    "id": 1857,
                    "name": "VariableDeclarationStatement",
                    "src": "2389:55:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1859
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_bondValue",
                          "scope": 1873,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1858,
                            "name": "ElementaryTypeName",
                            "src": "2497:7:4"
                          }
                        ],
                        "id": 1859,
                        "name": "VariableDeclaration",
                        "src": "2497:18:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fetchBondAmount",
                              "referencedDeclaration": 4503,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1835,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1860,
                                "name": "Identifier",
                                "src": "2518:2:4"
                              }
                            ],
                            "id": 1861,
                            "name": "MemberAccess",
                            "src": "2518:18:4"
                          }
                        ],
                        "id": 1862,
                        "name": "FunctionCall",
                        "src": "2518:20:4"
                      }
                    ],
                    "id": 1863,
                    "name": "VariableDeclarationStatement",
                    "src": "2497:41:4"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1839
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "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_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "div",
                                  "referencedDeclaration": 16833,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "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_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "mul",
                                          "referencedDeclaration": 16808,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1859,
                                              "type": "uint256",
                                              "value": "_bondValue"
                                            },
                                            "id": 1864,
                                            "name": "Identifier",
                                            "src": "2600:10:4"
                                          }
                                        ],
                                        "id": 1865,
                                        "name": "MemberAccess",
                                        "src": "2600:14:4"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "313030",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 100",
                                          "value": "100"
                                        },
                                        "id": 1866,
                                        "name": "Literal",
                                        "src": "2615:3:4"
                                      }
                                    ],
                                    "id": 1867,
                                    "name": "FunctionCall",
                                    "src": "2600:19:4"
                                  }
                                ],
                                "id": 1868,
                                "name": "MemberAccess",
                                "src": "2600:23:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1852,
                                  "type": "uint256",
                                  "value": "_lotValue"
                                },
                                "id": 1869,
                                "name": "Identifier",
                                "src": "2624:9:4"
                              }
                            ],
                            "id": 1870,
                            "name": "FunctionCall",
                            "src": "2600:34:4"
                          }
                        ],
                        "id": 1871,
                        "name": "TupleExpression",
                        "src": "2599:36:4"
                      }
                    ],
                    "id": 1872,
                    "name": "Return",
                    "src": "2592:43:4"
                  }
                ],
                "id": 1873,
                "name": "Block",
                "src": "2224:418:4"
              }
            ],
            "id": 1874,
            "name": "FunctionDefinition",
            "src": "2096:546:4"
          },
          {
            "attributes": {
              "documentation": "@dev              Starts signer liquidation by seizing signer bonds.\n                   If the deposit is currently being redeemed, the redeemer\n                   receives the full bond value; otherwise, a falling price auction\n                   begins to buy 1 TBTC in exchange for a portion of the seized bonds;\n                   see purchaseSignerBondsAtAuction().\n @param _wasFraud  True if liquidation is being started due to fraud, false if for any other reason.\n @param _d         Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "startLiquidation",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1957,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1875,
                        "name": "UserDefinedTypeName",
                        "src": "3240:20:4"
                      }
                    ],
                    "id": 1876,
                    "name": "VariableDeclaration",
                    "src": "3240:31:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_wasFraud",
                      "scope": 1957,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1877,
                        "name": "ElementaryTypeName",
                        "src": "3273:4:4"
                      }
                    ],
                    "id": 1878,
                    "name": "VariableDeclaration",
                    "src": "3273:14:4"
                  }
                ],
                "id": 1879,
                "name": "ParameterList",
                "src": "3239:49:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1880,
                "name": "ParameterList",
                "src": "3310:0:4"
              },
              {
                "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": "logStartedLiquidation",
                              "referencedDeclaration": 5354,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1876,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1881,
                                "name": "Identifier",
                                "src": "3320:2:4"
                              }
                            ],
                            "id": 1883,
                            "name": "MemberAccess",
                            "src": "3320:24:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1878,
                              "type": "bool",
                              "value": "_wasFraud"
                            },
                            "id": 1884,
                            "name": "Identifier",
                            "src": "3345:9:4"
                          }
                        ],
                        "id": 1885,
                        "name": "FunctionCall",
                        "src": "3320:35:4"
                      }
                    ],
                    "id": 1886,
                    "name": "ExpressionStatement",
                    "src": "3320:35:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1888
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "seized",
                          "scope": 1956,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1887,
                            "name": "ElementaryTypeName",
                            "src": "3366:7:4"
                          }
                        ],
                        "id": 1888,
                        "name": "VariableDeclaration",
                        "src": "3366:14:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "seizeSignerBonds",
                              "referencedDeclaration": 4698,
                              "type": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1876,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1889,
                                "name": "Identifier",
                                "src": "3383:2:4"
                              }
                            ],
                            "id": 1890,
                            "name": "MemberAccess",
                            "src": "3383:19:4"
                          }
                        ],
                        "id": 1891,
                        "name": "FunctionCall",
                        "src": "3383:21:4"
                      }
                    ],
                    "id": 1892,
                    "name": "VariableDeclarationStatement",
                    "src": "3366:38:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1894
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "redeemerAddress",
                          "scope": 1956,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 1893,
                            "name": "ElementaryTypeName",
                            "src": "3414:7:4"
                          }
                        ],
                        "id": 1894,
                        "name": "VariableDeclaration",
                        "src": "3414:23:4"
                      },
                      {
                        "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": 1876,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1895,
                            "name": "Identifier",
                            "src": "3440:2:4"
                          }
                        ],
                        "id": 1896,
                        "name": "MemberAccess",
                        "src": "3440:18:4"
                      }
                    ],
                    "id": 1897,
                    "name": "VariableDeclarationStatement",
                    "src": "3414:44:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "redemptionTeardown",
                              "referencedDeclaration": 4636,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1876,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1898,
                                "name": "Identifier",
                                "src": "3515:2:4"
                              }
                            ],
                            "id": 1900,
                            "name": "MemberAccess",
                            "src": "3515:21:4"
                          }
                        ],
                        "id": 1901,
                        "name": "FunctionCall",
                        "src": "3515:23:4"
                      }
                    ],
                    "id": 1902,
                    "name": "ExpressionStatement",
                    "src": "3515:23:4"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inRedemption",
                                  "referencedDeclaration": 3361,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1876,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1903,
                                    "name": "Identifier",
                                    "src": "3703:2:4"
                                  }
                                ],
                                "id": 1904,
                                "name": "MemberAccess",
                                "src": "3703:15:4"
                              }
                            ],
                            "id": 1905,
                            "name": "FunctionCall",
                            "src": "3703:17:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1878,
                              "type": "bool",
                              "value": "_wasFraud"
                            },
                            "id": 1906,
                            "name": "Identifier",
                            "src": "3724:9:4"
                          }
                        ],
                        "id": 1907,
                        "name": "BinaryOperation",
                        "src": "3703:30:4"
                      },
                      {
                        "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": "setLiquidated",
                                      "referencedDeclaration": 3777,
                                      "type": "function (struct DepositUtils.Deposit storage pointer)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1876,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1908,
                                        "name": "Identifier",
                                        "src": "3749:2:4"
                                      }
                                    ],
                                    "id": 1910,
                                    "name": "MemberAccess",
                                    "src": "3749:16:4"
                                  }
                                ],
                                "id": 1911,
                                "name": "FunctionCall",
                                "src": "3749:18:4"
                              }
                            ],
                            "id": 1912,
                            "name": "ExpressionStatement",
                            "src": "3749:18:4"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "enableWithdrawal",
                                      "referencedDeclaration": 4722,
                                      "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1876,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1913,
                                        "name": "Identifier",
                                        "src": "3781:2:4"
                                      }
                                    ],
                                    "id": 1915,
                                    "name": "MemberAccess",
                                    "src": "3781:19:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1894,
                                      "type": "address",
                                      "value": "redeemerAddress"
                                    },
                                    "id": 1916,
                                    "name": "Identifier",
                                    "src": "3801:15:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1888,
                                      "type": "uint256",
                                      "value": "seized"
                                    },
                                    "id": 1917,
                                    "name": "Identifier",
                                    "src": "3818:6:4"
                                  }
                                ],
                                "id": 1918,
                                "name": "FunctionCall",
                                "src": "3781:44:4"
                              }
                            ],
                            "id": 1919,
                            "name": "ExpressionStatement",
                            "src": "3781:44:4"
                          },
                          {
                            "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": "logLiquidated",
                                      "referencedDeclaration": 5397,
                                      "type": "function (struct DepositUtils.Deposit storage pointer)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1876,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1920,
                                        "name": "Identifier",
                                        "src": "3839:2:4"
                                      }
                                    ],
                                    "id": 1922,
                                    "name": "MemberAccess",
                                    "src": "3839:16:4"
                                  }
                                ],
                                "id": 1923,
                                "name": "FunctionCall",
                                "src": "3839:18:4"
                              }
                            ],
                            "id": 1924,
                            "name": "ExpressionStatement",
                            "src": "3839:18:4"
                          },
                          {
                            "attributes": {
                              "expression": null,
                              "functionReturnParameters": 1880
                            },
                            "id": 1925,
                            "name": "Return",
                            "src": "3871:7:4"
                          }
                        ],
                        "id": 1926,
                        "name": "Block",
                        "src": "3735:153:4"
                      }
                    ],
                    "id": 1927,
                    "name": "IfStatement",
                    "src": "3699:189:4"
                  },
                  {
                    "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": 1876,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1928,
                                "name": "Identifier",
                                "src": "3898:2:4"
                              }
                            ],
                            "id": 1930,
                            "name": "MemberAccess",
                            "src": "3898:23:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1931,
                                "name": "Identifier",
                                "src": "3924:3:4"
                              }
                            ],
                            "id": 1932,
                            "name": "MemberAccess",
                            "src": "3924:10:4"
                          }
                        ],
                        "id": 1933,
                        "name": "Assignment",
                        "src": "3898:36:4"
                      }
                    ],
                    "id": 1934,
                    "name": "ExpressionStatement",
                    "src": "3898:36:4"
                  },
                  {
                    "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": 1876,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1935,
                                "name": "Identifier",
                                "src": "3944:2:4"
                              }
                            ],
                            "id": 1937,
                            "name": "MemberAccess",
                            "src": "3944:23:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 1938,
                                "name": "Identifier",
                                "src": "3970:5:4"
                              }
                            ],
                            "id": 1939,
                            "name": "MemberAccess",
                            "src": "3970:15:4"
                          }
                        ],
                        "id": 1940,
                        "name": "Assignment",
                        "src": "3944:41:4"
                      }
                    ],
                    "id": 1941,
                    "name": "ExpressionStatement",
                    "src": "3944:41:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1878,
                          "type": "bool",
                          "value": "_wasFraud"
                        },
                        "id": 1942,
                        "name": "Identifier",
                        "src": "4035:9:4"
                      },
                      {
                        "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": "setFraudLiquidationInProgress",
                                      "referencedDeclaration": 3747,
                                      "type": "function (struct DepositUtils.Deposit storage pointer)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1876,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1943,
                                        "name": "Identifier",
                                        "src": "4060:2:4"
                                      }
                                    ],
                                    "id": 1945,
                                    "name": "MemberAccess",
                                    "src": "4060:32:4"
                                  }
                                ],
                                "id": 1946,
                                "name": "FunctionCall",
                                "src": "4060:34:4"
                              }
                            ],
                            "id": 1947,
                            "name": "ExpressionStatement",
                            "src": "4060:34:4"
                          }
                        ],
                        "id": 1948,
                        "name": "Block",
                        "src": "4046:59:4"
                      },
                      {
                        "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": "setLiquidationInProgress",
                                      "referencedDeclaration": 3762,
                                      "type": "function (struct DepositUtils.Deposit storage pointer)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1876,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1949,
                                        "name": "Identifier",
                                        "src": "4125:2:4"
                                      }
                                    ],
                                    "id": 1951,
                                    "name": "MemberAccess",
                                    "src": "4125:27:4"
                                  }
                                ],
                                "id": 1952,
                                "name": "FunctionCall",
                                "src": "4125:29:4"
                              }
                            ],
                            "id": 1953,
                            "name": "ExpressionStatement",
                            "src": "4125:29:4"
                          }
                        ],
                        "id": 1954,
                        "name": "Block",
                        "src": "4111:54:4"
                      }
                    ],
                    "id": 1955,
                    "name": "IfStatement",
                    "src": "4031:134:4"
                  }
                ],
                "id": 1956,
                "name": "Block",
                "src": "3310:861:4"
              }
            ],
            "id": 1957,
            "name": "FunctionDefinition",
            "src": "3214:957:4"
          },
          {
            "attributes": {
              "documentation": "@notice                 Anyone can provide a signature that was not requested to prove fraud.\n @dev                    Calls out to the keep to verify if there was fraud.\n @param  _d              Deposit storage pointer.\n @param  _v              Signature recovery value.\n @param  _r              Signature R value.\n @param  _s              Signature S value.\n @param _signedDigest    The digest signed by the signature vrs tuple.\n @param _preimage        The sha256 preimage of the digest.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "provideECDSAFraudProof",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1958,
                        "name": "UserDefinedTypeName",
                        "src": "4766:20:4"
                      }
                    ],
                    "id": 1959,
                    "name": "VariableDeclaration",
                    "src": "4766:31:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_v",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 1960,
                        "name": "ElementaryTypeName",
                        "src": "4807:5:4"
                      }
                    ],
                    "id": 1961,
                    "name": "VariableDeclaration",
                    "src": "4807:8:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_r",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1962,
                        "name": "ElementaryTypeName",
                        "src": "4825:7:4"
                      }
                    ],
                    "id": 1963,
                    "name": "VariableDeclaration",
                    "src": "4825:10:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_s",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1964,
                        "name": "ElementaryTypeName",
                        "src": "4845:7:4"
                      }
                    ],
                    "id": 1965,
                    "name": "VariableDeclaration",
                    "src": "4845:10:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signedDigest",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1966,
                        "name": "ElementaryTypeName",
                        "src": "4865:7:4"
                      }
                    ],
                    "id": 1967,
                    "name": "VariableDeclaration",
                    "src": "4865:21:4"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_preimage",
                      "scope": 2011,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1968,
                        "name": "ElementaryTypeName",
                        "src": "4896:5:4"
                      }
                    ],
                    "id": 1969,
                    "name": "VariableDeclaration",
                    "src": "4896:22:4"
                  }
                ],
                "id": 1970,
                "name": "ParameterList",
                "src": "4756:168:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1971,
                "name": "ParameterList",
                "src": "4932:0:4"
              },
              {
                "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5ac593fe1995561da008aac1ec0002bfdcc7f4cf986ecab305647a66664b8e7a",
                                  "typeString": "literal_string \"Use provideFundingECDSAFraudProof instead\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1972,
                            "name": "Identifier",
                            "src": "4999:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "inFunding",
                                      "referencedDeclaration": 3311,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1959,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1973,
                                        "name": "Identifier",
                                        "src": "5008:2:4"
                                      }
                                    ],
                                    "id": 1974,
                                    "name": "MemberAccess",
                                    "src": "5008:12:4"
                                  }
                                ],
                                "id": 1975,
                                "name": "FunctionCall",
                                "src": "5008:14:4"
                              }
                            ],
                            "id": 1976,
                            "name": "UnaryOperation",
                            "src": "5007:15:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5573652070726f7669646546756e64696e674543445341467261756450726f6f6620696e7374656164",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Use provideFundingECDSAFraudProof instead\"",
                              "value": "Use provideFundingECDSAFraudProof instead"
                            },
                            "id": 1977,
                            "name": "Literal",
                            "src": "5024:43:4"
                          }
                        ],
                        "id": 1978,
                        "name": "FunctionCall",
                        "src": "4999:69:4"
                      }
                    ],
                    "id": 1979,
                    "name": "ExpressionStatement",
                    "src": "4999:69:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_52ecb9707b9e5311cb5ac809b6ea6aa3bb6b1409f5dc192f5ca825f6ae556047",
                                  "typeString": "literal_string \"Signer liquidation already in progress\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1980,
                            "name": "Identifier",
                            "src": "5078:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "inSignerLiquidation",
                                      "referencedDeclaration": 3336,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1959,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1981,
                                        "name": "Identifier",
                                        "src": "5100:2:4"
                                      }
                                    ],
                                    "id": 1982,
                                    "name": "MemberAccess",
                                    "src": "5100:22:4"
                                  }
                                ],
                                "id": 1983,
                                "name": "FunctionCall",
                                "src": "5100:24:4"
                              }
                            ],
                            "id": 1984,
                            "name": "UnaryOperation",
                            "src": "5099:25:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5369676e6572206c69717569646174696f6e20616c726561647920696e2070726f6772657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Signer liquidation already in progress\"",
                              "value": "Signer liquidation already in progress"
                            },
                            "id": 1985,
                            "name": "Literal",
                            "src": "5138:40:4"
                          }
                        ],
                        "id": 1986,
                        "name": "FunctionCall",
                        "src": "5078:110:4"
                      }
                    ],
                    "id": 1987,
                    "name": "ExpressionStatement",
                    "src": "5078:110:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_39692be660abb58e6fabf1fe4b4c667849345165688e7236598e0b010d437f2c",
                                  "typeString": "literal_string \"Contract has halted\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1988,
                            "name": "Identifier",
                            "src": "5198:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "inEndState",
                                      "referencedDeclaration": 3394,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1959,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1989,
                                        "name": "Identifier",
                                        "src": "5207:2:4"
                                      }
                                    ],
                                    "id": 1990,
                                    "name": "MemberAccess",
                                    "src": "5207:13:4"
                                  }
                                ],
                                "id": 1991,
                                "name": "FunctionCall",
                                "src": "5207:15:4"
                              }
                            ],
                            "id": 1992,
                            "name": "UnaryOperation",
                            "src": "5206:16:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "436f6e7472616374206861732068616c746564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Contract has halted\"",
                              "value": "Contract has halted"
                            },
                            "id": 1993,
                            "name": "Literal",
                            "src": "5224:21:4"
                          }
                        ],
                        "id": 1994,
                        "name": "FunctionCall",
                        "src": "5198:48:4"
                      }
                    ],
                    "id": 1995,
                    "name": "ExpressionStatement",
                    "src": "5198:48:4"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1833,
                              "type": "function (struct DepositUtils.Deposit storage pointer,uint8,bytes32,bytes32,bytes32,bytes memory)",
                              "value": "submitSignatureFraud"
                            },
                            "id": 1996,
                            "name": "Identifier",
                            "src": "5256:20:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1959,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1997,
                            "name": "Identifier",
                            "src": "5277:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1961,
                              "type": "uint8",
                              "value": "_v"
                            },
                            "id": 1998,
                            "name": "Identifier",
                            "src": "5281:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1963,
                              "type": "bytes32",
                              "value": "_r"
                            },
                            "id": 1999,
                            "name": "Identifier",
                            "src": "5285:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1965,
                              "type": "bytes32",
                              "value": "_s"
                            },
                            "id": 2000,
                            "name": "Identifier",
                            "src": "5289:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1967,
                              "type": "bytes32",
                              "value": "_signedDigest"
                            },
                            "id": 2001,
                            "name": "Identifier",
                            "src": "5293:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1969,
                              "type": "bytes memory",
                              "value": "_preimage"
                            },
                            "id": 2002,
                            "name": "Identifier",
                            "src": "5308:9:4"
                          }
                        ],
                        "id": 2003,
                        "name": "FunctionCall",
                        "src": "5256:62:4"
                      }
                    ],
                    "id": 2004,
                    "name": "ExpressionStatement",
                    "src": "5256:62:4"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1957,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bool)",
                              "value": "startLiquidation"
                            },
                            "id": 2005,
                            "name": "Identifier",
                            "src": "5329:16:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1959,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 2006,
                            "name": "Identifier",
                            "src": "5346:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 2007,
                            "name": "Literal",
                            "src": "5350:4:4"
                          }
                        ],
                        "id": 2008,
                        "name": "FunctionCall",
                        "src": "5329:26:4"
                      }
                    ],
                    "id": 2009,
                    "name": "ExpressionStatement",
                    "src": "5329:26:4"
                  }
                ],
                "id": 2010,
                "name": "Block",
                "src": "4932:430:4"
              }
            ],
            "id": 2011,
            "name": "FunctionDefinition",
            "src": "4725:637:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Closes an auction and purchases the signer bonds. Payout to buyer, funder, then signers if not fraud.\n @dev        For interface, reading auctionValue will give a past value. the current is better.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "purchaseSignerBondsAtAuction",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2196,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 2012,
                        "name": "UserDefinedTypeName",
                        "src": "5676:20:4"
                      }
                    ],
                    "id": 2013,
                    "name": "VariableDeclaration",
                    "src": "5676:31:4"
                  }
                ],
                "id": 2014,
                "name": "ParameterList",
                "src": "5675:33:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2015,
                "name": "ParameterList",
                "src": "5730:0:4"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2017
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_wasFraud",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 2016,
                            "name": "ElementaryTypeName",
                            "src": "5740:4:4"
                          }
                        ],
                        "id": 2017,
                        "name": "VariableDeclaration",
                        "src": "5740:14:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "inFraudLiquidationInProgress",
                              "referencedDeclaration": 3580,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2018,
                                "name": "Identifier",
                                "src": "5757:2:4"
                              }
                            ],
                            "id": 2019,
                            "name": "MemberAccess",
                            "src": "5757:31:4"
                          }
                        ],
                        "id": 2020,
                        "name": "FunctionCall",
                        "src": "5757:33:4"
                      }
                    ],
                    "id": 2021,
                    "name": "VariableDeclarationStatement",
                    "src": "5740:50:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_92166f1beeb8af42fb4df5d3349f886768dfa1eda75455d8ed684783c4c9eef1",
                                  "typeString": "literal_string \"No active auction\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2022,
                            "name": "Identifier",
                            "src": "5800:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inSignerLiquidation",
                                  "referencedDeclaration": 3336,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2013,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2023,
                                    "name": "Identifier",
                                    "src": "5808:2:4"
                                  }
                                ],
                                "id": 2024,
                                "name": "MemberAccess",
                                "src": "5808:22:4"
                              }
                            ],
                            "id": 2025,
                            "name": "FunctionCall",
                            "src": "5808:24:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f206163746976652061756374696f6e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"No active auction\"",
                              "value": "No active auction"
                            },
                            "id": 2026,
                            "name": "Literal",
                            "src": "5834:19:4"
                          }
                        ],
                        "id": 2027,
                        "name": "FunctionCall",
                        "src": "5800:54:4"
                      }
                    ],
                    "id": 2028,
                    "name": "ExpressionStatement",
                    "src": "5800:54:4"
                  },
                  {
                    "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": "setLiquidated",
                              "referencedDeclaration": 3777,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2029,
                                "name": "Identifier",
                                "src": "5865:2:4"
                              }
                            ],
                            "id": 2031,
                            "name": "MemberAccess",
                            "src": "5865:16:4"
                          }
                        ],
                        "id": 2032,
                        "name": "FunctionCall",
                        "src": "5865:18:4"
                      }
                    ],
                    "id": 2033,
                    "name": "ExpressionStatement",
                    "src": "5865:18:4"
                  },
                  {
                    "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": "logLiquidated",
                              "referencedDeclaration": 5397,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2034,
                                "name": "Identifier",
                                "src": "5893:2:4"
                              }
                            ],
                            "id": 2036,
                            "name": "MemberAccess",
                            "src": "5893:16:4"
                          }
                        ],
                        "id": 2037,
                        "name": "FunctionCall",
                        "src": "5893:18:4"
                      }
                    ],
                    "id": 2038,
                    "name": "ExpressionStatement",
                    "src": "5893:18:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2040
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "tbtcRecipient",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2039,
                            "name": "ElementaryTypeName",
                            "src": "6232:7:4"
                          }
                        ],
                        "id": 2040,
                        "name": "VariableDeclaration",
                        "src": "6232:21:4"
                      },
                      {
                        "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": 2013,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 2041,
                            "name": "Identifier",
                            "src": "6256:2:4"
                          }
                        ],
                        "id": 2042,
                        "name": "MemberAccess",
                        "src": "6256:18:4"
                      }
                    ],
                    "id": 2043,
                    "name": "VariableDeclarationStatement",
                    "src": "6232:42:4"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2040,
                              "type": "address",
                              "value": "tbtcRecipient"
                            },
                            "id": 2044,
                            "name": "Identifier",
                            "src": "6288:13:4"
                          },
                          {
                            "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": 2045,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6305:7:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2046,
                                "name": "Literal",
                                "src": "6313:1:4"
                              }
                            ],
                            "id": 2047,
                            "name": "FunctionCall",
                            "src": "6305:10:4"
                          }
                        ],
                        "id": 2048,
                        "name": "BinaryOperation",
                        "src": "6288:27:4"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2040,
                                      "type": "address",
                                      "value": "tbtcRecipient"
                                    },
                                    "id": 2049,
                                    "name": "Identifier",
                                    "src": "6331:13:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "depositOwner",
                                          "referencedDeclaration": 4604,
                                          "type": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2013,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 2050,
                                            "name": "Identifier",
                                            "src": "6347:2:4"
                                          }
                                        ],
                                        "id": 2051,
                                        "name": "MemberAccess",
                                        "src": "6347:15:4"
                                      }
                                    ],
                                    "id": 2052,
                                    "name": "FunctionCall",
                                    "src": "6347:17:4"
                                  }
                                ],
                                "id": 2053,
                                "name": "Assignment",
                                "src": "6331:33:4"
                              }
                            ],
                            "id": 2054,
                            "name": "ExpressionStatement",
                            "src": "6331:33:4"
                          }
                        ],
                        "id": 2055,
                        "name": "Block",
                        "src": "6317:58:4"
                      }
                    ],
                    "id": 2056,
                    "name": "IfStatement",
                    "src": "6284:91:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2058
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "lotSizeTbtc",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2057,
                            "name": "ElementaryTypeName",
                            "src": "6384:7:4"
                          }
                        ],
                        "id": 2058,
                        "name": "VariableDeclaration",
                        "src": "6384:19:4"
                      },
                      {
                        "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": "lotSizeTbtc",
                              "referencedDeclaration": 4356,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2059,
                                "name": "Identifier",
                                "src": "6406:2:4"
                              }
                            ],
                            "id": 2060,
                            "name": "MemberAccess",
                            "src": "6406:14:4"
                          }
                        ],
                        "id": 2061,
                        "name": "FunctionCall",
                        "src": "6406:16:4"
                      }
                    ],
                    "id": 2062,
                    "name": "VariableDeclarationStatement",
                    "src": "6384:38:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_12907e6f7579715899a624f6b2c8b73aa343e544e2f71d23779df1f006c42363",
                                  "typeString": "literal_string \"Not enough TBTC to cover outstanding debt\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2063,
                            "name": "Identifier",
                            "src": "6433:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "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_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 17007,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tbtcToken",
                                          "referencedDeclaration": 3830,
                                          "type": "contract TBTCToken"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2013,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 2064,
                                            "name": "Identifier",
                                            "src": "6454:2:4"
                                          }
                                        ],
                                        "id": 2065,
                                        "name": "MemberAccess",
                                        "src": "6454:12:4"
                                      }
                                    ],
                                    "id": 2066,
                                    "name": "MemberAccess",
                                    "src": "6454:22:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 2067,
                                        "name": "Identifier",
                                        "src": "6477:3:4"
                                      }
                                    ],
                                    "id": 2068,
                                    "name": "MemberAccess",
                                    "src": "6477:10:4"
                                  }
                                ],
                                "id": 2069,
                                "name": "FunctionCall",
                                "src": "6454:34:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2058,
                                  "type": "uint256",
                                  "value": "lotSizeTbtc"
                                },
                                "id": 2070,
                                "name": "Identifier",
                                "src": "6492:11:4"
                              }
                            ],
                            "id": 2071,
                            "name": "BinaryOperation",
                            "src": "6454:49:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f7420656e6f756768205442544320746f20636f766572206f75747374616e64696e672064656274",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not enough TBTC to cover outstanding debt\"",
                              "value": "Not enough TBTC to cover outstanding debt"
                            },
                            "id": 2072,
                            "name": "Literal",
                            "src": "6517:43:4"
                          }
                        ],
                        "id": 2073,
                        "name": "FunctionCall",
                        "src": "6433:137:4"
                      }
                    ],
                    "id": 2074,
                    "name": "ExpressionStatement",
                    "src": "6433:137:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2040,
                              "type": "address",
                              "value": "tbtcRecipient"
                            },
                            "id": 2075,
                            "name": "Identifier",
                            "src": "6585:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "vendingMachineAddress",
                              "referencedDeclaration": 3836,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2076,
                                "name": "Identifier",
                                "src": "6602:2:4"
                              }
                            ],
                            "id": 2077,
                            "name": "MemberAccess",
                            "src": "6602:24:4"
                          }
                        ],
                        "id": 2078,
                        "name": "BinaryOperation",
                        "src": "6585:41:4"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "burnFrom",
                                      "referencedDeclaration": 8512,
                                      "type": "function (address,uint256) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tbtcToken",
                                          "referencedDeclaration": 3830,
                                          "type": "contract TBTCToken"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2013,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 2079,
                                            "name": "Identifier",
                                            "src": "6642:2:4"
                                          }
                                        ],
                                        "id": 2082,
                                        "name": "MemberAccess",
                                        "src": "6642:12:4"
                                      }
                                    ],
                                    "id": 2083,
                                    "name": "MemberAccess",
                                    "src": "6642:21:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 2084,
                                        "name": "Identifier",
                                        "src": "6664:3:4"
                                      }
                                    ],
                                    "id": 2085,
                                    "name": "MemberAccess",
                                    "src": "6664:10:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2058,
                                      "type": "uint256",
                                      "value": "lotSizeTbtc"
                                    },
                                    "id": 2086,
                                    "name": "Identifier",
                                    "src": "6676:11:4"
                                  }
                                ],
                                "id": 2087,
                                "name": "FunctionCall",
                                "src": "6642:46:4"
                              }
                            ],
                            "id": 2088,
                            "name": "ExpressionStatement",
                            "src": "6642:46:4"
                          }
                        ],
                        "id": 2089,
                        "name": "Block",
                        "src": "6628:108:4"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transferFrom",
                                      "referencedDeclaration": 17096,
                                      "type": "function (address,address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "tbtcToken",
                                          "referencedDeclaration": 3830,
                                          "type": "contract TBTCToken"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2013,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 2090,
                                            "name": "Identifier",
                                            "src": "6756:2:4"
                                          }
                                        ],
                                        "id": 2093,
                                        "name": "MemberAccess",
                                        "src": "6756:12:4"
                                      }
                                    ],
                                    "id": 2094,
                                    "name": "MemberAccess",
                                    "src": "6756:25:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 2095,
                                        "name": "Identifier",
                                        "src": "6782:3:4"
                                      }
                                    ],
                                    "id": 2096,
                                    "name": "MemberAccess",
                                    "src": "6782:10:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2040,
                                      "type": "address",
                                      "value": "tbtcRecipient"
                                    },
                                    "id": 2097,
                                    "name": "Identifier",
                                    "src": "6794:13:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2058,
                                      "type": "uint256",
                                      "value": "lotSizeTbtc"
                                    },
                                    "id": 2098,
                                    "name": "Identifier",
                                    "src": "6809:11:4"
                                  }
                                ],
                                "id": 2099,
                                "name": "FunctionCall",
                                "src": "6756:65:4"
                              }
                            ],
                            "id": 2100,
                            "name": "ExpressionStatement",
                            "src": "6756:65:4"
                          }
                        ],
                        "id": 2101,
                        "name": "Block",
                        "src": "6742:90:4"
                      }
                    ],
                    "id": 2102,
                    "name": "IfStatement",
                    "src": "6581:251:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2104
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "valueToDistribute",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2103,
                            "name": "ElementaryTypeName",
                            "src": "6887:7:4"
                          }
                        ],
                        "id": 2104,
                        "name": "VariableDeclaration",
                        "src": "6887:25:4"
                      },
                      {
                        "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": "auctionValue",
                              "referencedDeclaration": 4340,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2105,
                                "name": "Identifier",
                                "src": "6915:2:4"
                              }
                            ],
                            "id": 2106,
                            "name": "MemberAccess",
                            "src": "6915:15:4"
                          }
                        ],
                        "id": 2107,
                        "name": "FunctionCall",
                        "src": "6915:17:4"
                      }
                    ],
                    "id": 2108,
                    "name": "VariableDeclarationStatement",
                    "src": "6887:45:4"
                  },
                  {
                    "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_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "enableWithdrawal",
                              "referencedDeclaration": 4722,
                              "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2109,
                                "name": "Identifier",
                                "src": "6942:2:4"
                              }
                            ],
                            "id": 2111,
                            "name": "MemberAccess",
                            "src": "6942:19:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 2112,
                                "name": "Identifier",
                                "src": "6962:3:4"
                              }
                            ],
                            "id": 2113,
                            "name": "MemberAccess",
                            "src": "6962:10:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2104,
                              "type": "uint256",
                              "value": "valueToDistribute"
                            },
                            "id": 2114,
                            "name": "Identifier",
                            "src": "6974:17:4"
                          }
                        ],
                        "id": 2115,
                        "name": "FunctionCall",
                        "src": "6942:50:4"
                      }
                    ],
                    "id": 2116,
                    "name": "ExpressionStatement",
                    "src": "6942:50:4"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "distributeFeeRebate",
                              "referencedDeclaration": 4843,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2013,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2117,
                                "name": "Identifier",
                                "src": "7064:2:4"
                              }
                            ],
                            "id": 2119,
                            "name": "MemberAccess",
                            "src": "7064:22:4"
                          }
                        ],
                        "id": 2120,
                        "name": "FunctionCall",
                        "src": "7064:24:4"
                      }
                    ],
                    "id": 2121,
                    "name": "ExpressionStatement",
                    "src": "7064:24:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2123
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "contractEthBalance",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2122,
                            "name": "ElementaryTypeName",
                            "src": "7417:7:4"
                          }
                        ],
                        "id": 2123,
                        "name": "VariableDeclaration",
                        "src": "7417:26:4"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "balance",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_DepositLiquidation_$2330",
                                      "typeString": "library DepositLiquidation"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 2124,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7446:7:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18436,
                                  "type": "library DepositLiquidation",
                                  "value": "this"
                                },
                                "id": 2125,
                                "name": "Identifier",
                                "src": "7454:4:4"
                              }
                            ],
                            "id": 2126,
                            "name": "FunctionCall",
                            "src": "7446:13:4"
                          }
                        ],
                        "id": 2127,
                        "name": "MemberAccess",
                        "src": "7446:21:4"
                      }
                    ],
                    "id": 2128,
                    "name": "VariableDeclarationStatement",
                    "src": "7417:50:4"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2130
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "initiator",
                          "scope": 2195,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address payable",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "payable",
                              "type": "address payable"
                            },
                            "id": 2129,
                            "name": "ElementaryTypeName",
                            "src": "7477:15:4"
                          }
                        ],
                        "id": 2130,
                        "name": "VariableDeclaration",
                        "src": "7477:25:4"
                      },
                      {
                        "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": 2013,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 2131,
                            "name": "Identifier",
                            "src": "7505:2:4"
                          }
                        ],
                        "id": 2132,
                        "name": "MemberAccess",
                        "src": "7505:23:4"
                      }
                    ],
                    "id": 2133,
                    "name": "VariableDeclarationStatement",
                    "src": "7477:51:4"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2130,
                              "type": "address payable",
                              "value": "initiator"
                            },
                            "id": 2134,
                            "name": "Identifier",
                            "src": "7543:9:4"
                          },
                          {
                            "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": 2135,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7556:7:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2136,
                                "name": "Literal",
                                "src": "7564:1:4"
                              }
                            ],
                            "id": 2137,
                            "name": "FunctionCall",
                            "src": "7556:10:4"
                          }
                        ],
                        "id": 2138,
                        "name": "BinaryOperation",
                        "src": "7543:23:4"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2130,
                                      "type": "address payable",
                                      "value": "initiator"
                                    },
                                    "id": 2139,
                                    "name": "Identifier",
                                    "src": "7582:9:4"
                                  },
                                  {
                                    "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_57005_by_1",
                                              "typeString": "int_const 57005"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 2140,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "7594:7:4"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "307864656164",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 57005",
                                          "value": "0xdead"
                                        },
                                        "id": 2141,
                                        "name": "Literal",
                                        "src": "7602:6:4"
                                      }
                                    ],
                                    "id": 2142,
                                    "name": "FunctionCall",
                                    "src": "7594:15:4"
                                  }
                                ],
                                "id": 2143,
                                "name": "Assignment",
                                "src": "7582:27:4"
                              }
                            ],
                            "id": 2144,
                            "name": "ExpressionStatement",
                            "src": "7582:27:4"
                          }
                        ],
                        "id": 2145,
                        "name": "Block",
                        "src": "7568:52:4"
                      }
                    ],
                    "id": 2146,
                    "name": "IfStatement",
                    "src": "7539:81:4"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2123,
                              "type": "uint256",
                              "value": "contractEthBalance"
                            },
                            "id": 2147,
                            "name": "Identifier",
                            "src": "7633:18:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2104,
                                  "type": "uint256",
                                  "value": "valueToDistribute"
                                },
                                "id": 2148,
                                "name": "Identifier",
                                "src": "7654:17:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 2149,
                                "name": "Literal",
                                "src": "7674:1:4"
                              }
                            ],
                            "id": 2150,
                            "name": "BinaryOperation",
                            "src": "7654:21:4"
                          }
                        ],
                        "id": 2151,
                        "name": "BinaryOperation",
                        "src": "7633:42:4"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2153
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "remainingUnallocated",
                                  "scope": 2193,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2152,
                                    "name": "ElementaryTypeName",
                                    "src": "7691:7:4"
                                  }
                                ],
                                "id": 2153,
                                "name": "VariableDeclaration",
                                "src": "7691:28:4"
                              },
                              {
                                "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_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sub",
                                      "referencedDeclaration": 16774,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2123,
                                          "type": "uint256",
                                          "value": "contractEthBalance"
                                        },
                                        "id": 2154,
                                        "name": "Identifier",
                                        "src": "7738:18:4"
                                      }
                                    ],
                                    "id": 2155,
                                    "name": "MemberAccess",
                                    "src": "7738:22:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2104,
                                      "type": "uint256",
                                      "value": "valueToDistribute"
                                    },
                                    "id": 2156,
                                    "name": "Identifier",
                                    "src": "7761:17:4"
                                  }
                                ],
                                "id": 2157,
                                "name": "FunctionCall",
                                "src": "7738:41:4"
                              }
                            ],
                            "id": 2158,
                            "name": "VariableDeclarationStatement",
                            "src": "7691:88:4"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2017,
                                  "type": "bool",
                                  "value": "_wasFraud"
                                },
                                "id": 2159,
                                "name": "Identifier",
                                "src": "7797:9:4"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "enableWithdrawal",
                                              "referencedDeclaration": 4722,
                                              "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2013,
                                                  "type": "struct DepositUtils.Deposit storage pointer",
                                                  "value": "_d"
                                                },
                                                "id": 2160,
                                                "name": "Identifier",
                                                "src": "7826:2:4"
                                              }
                                            ],
                                            "id": 2162,
                                            "name": "MemberAccess",
                                            "src": "7826:19:4"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2130,
                                              "type": "address payable",
                                              "value": "initiator"
                                            },
                                            "id": 2163,
                                            "name": "Identifier",
                                            "src": "7846:9:4"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2153,
                                              "type": "uint256",
                                              "value": "remainingUnallocated"
                                            },
                                            "id": 2164,
                                            "name": "Identifier",
                                            "src": "7857:20:4"
                                          }
                                        ],
                                        "id": 2165,
                                        "name": "FunctionCall",
                                        "src": "7826:52:4"
                                      }
                                    ],
                                    "id": 2166,
                                    "name": "ExpressionStatement",
                                    "src": "7826:52:4"
                                  }
                                ],
                                "id": 2167,
                                "name": "Block",
                                "src": "7808:85:4"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        2169
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "name": "split",
                                          "scope": 2191,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "value": null,
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 2168,
                                            "name": "ElementaryTypeName",
                                            "src": "7982:7:4"
                                          }
                                        ],
                                        "id": 2169,
                                        "name": "VariableDeclaration",
                                        "src": "7982:13:4"
                                      },
                                      {
                                        "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_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "div",
                                              "referencedDeclaration": 16833,
                                              "type": "function (uint256,uint256) pure returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2153,
                                                  "type": "uint256",
                                                  "value": "remainingUnallocated"
                                                },
                                                "id": 2170,
                                                "name": "Identifier",
                                                "src": "7998:20:4"
                                              }
                                            ],
                                            "id": 2171,
                                            "name": "MemberAccess",
                                            "src": "7998:24:4"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "32",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 2",
                                              "value": "2"
                                            },
                                            "id": 2172,
                                            "name": "Literal",
                                            "src": "8023:1:4"
                                          }
                                        ],
                                        "id": 2173,
                                        "name": "FunctionCall",
                                        "src": "7998:27:4"
                                      }
                                    ],
                                    "id": 2174,
                                    "name": "VariableDeclarationStatement",
                                    "src": "7982:43:4"
                                  },
                                  {
                                    "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": 2013,
                                                  "type": "struct DepositUtils.Deposit storage pointer",
                                                  "value": "_d"
                                                },
                                                "id": 2175,
                                                "name": "Identifier",
                                                "src": "8043:2:4"
                                              }
                                            ],
                                            "id": 2177,
                                            "name": "MemberAccess",
                                            "src": "8043:23:4"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2169,
                                              "type": "uint256",
                                              "value": "split"
                                            },
                                            "id": 2178,
                                            "name": "Identifier",
                                            "src": "8067:5:4"
                                          }
                                        ],
                                        "id": 2179,
                                        "name": "FunctionCall",
                                        "src": "8043:30:4"
                                      }
                                    ],
                                    "id": 2180,
                                    "name": "ExpressionStatement",
                                    "src": "8043:30:4"
                                  },
                                  {
                                    "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_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "enableWithdrawal",
                                              "referencedDeclaration": 4722,
                                              "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2013,
                                                  "type": "struct DepositUtils.Deposit storage pointer",
                                                  "value": "_d"
                                                },
                                                "id": 2181,
                                                "name": "Identifier",
                                                "src": "8091:2:4"
                                              }
                                            ],
                                            "id": 2183,
                                            "name": "MemberAccess",
                                            "src": "8091:19:4"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2130,
                                              "type": "address payable",
                                              "value": "initiator"
                                            },
                                            "id": 2184,
                                            "name": "Identifier",
                                            "src": "8111:9:4"
                                          },
                                          {
                                            "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_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sub",
                                                  "referencedDeclaration": 16774,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2153,
                                                      "type": "uint256",
                                                      "value": "remainingUnallocated"
                                                    },
                                                    "id": 2185,
                                                    "name": "Identifier",
                                                    "src": "8122:20:4"
                                                  }
                                                ],
                                                "id": 2186,
                                                "name": "MemberAccess",
                                                "src": "8122:24:4"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2169,
                                                  "type": "uint256",
                                                  "value": "split"
                                                },
                                                "id": 2187,
                                                "name": "Identifier",
                                                "src": "8147:5:4"
                                              }
                                            ],
                                            "id": 2188,
                                            "name": "FunctionCall",
                                            "src": "8122:31:4"
                                          }
                                        ],
                                        "id": 2189,
                                        "name": "FunctionCall",
                                        "src": "8091:63:4"
                                      }
                                    ],
                                    "id": 2190,
                                    "name": "ExpressionStatement",
                                    "src": "8091:63:4"
                                  }
                                ],
                                "id": 2191,
                                "name": "Block",
                                "src": "7899:270:4"
                              }
                            ],
                            "id": 2192,
                            "name": "IfStatement",
                            "src": "7793:376:4"
                          }
                        ],
                        "id": 2193,
                        "name": "Block",
                        "src": "7677:502:4"
                      }
                    ],
                    "id": 2194,
                    "name": "IfStatement",
                    "src": "7629:550:4"
                  }
                ],
                "id": 2195,
                "name": "Block",
                "src": "5730:2455:4"
              }
            ],
            "id": 2196,
            "name": "FunctionDefinition",
            "src": "5638:2547:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Notify the contract that the signers are undercollateralized.\n @dev        Calls out to the system for oracle info.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "notifyCourtesyCall",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2236,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 2197,
                        "name": "UserDefinedTypeName",
                        "src": "8407:20:4"
                      }
                    ],
                    "id": 2198,
                    "name": "VariableDeclaration",
                    "src": "8407:31:4"
                  }
                ],
                "id": 2199,
                "name": "ParameterList",
                "src": "8406:33:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2200,
                "name": "ParameterList",
                "src": "8449:0:4"
              },
              {
                "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_55a6bedb19936d3678a04e935ca0ec62549ae271b40cc738f99f774b65cd959d",
                                  "typeString": "literal_string \"Can only courtesy call from active state\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2201,
                            "name": "Identifier",
                            "src": "8459:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inActive",
                                  "referencedDeclaration": 3500,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2198,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2202,
                                    "name": "Identifier",
                                    "src": "8467:2:4"
                                  }
                                ],
                                "id": 2203,
                                "name": "MemberAccess",
                                "src": "8467:11:4"
                              }
                            ],
                            "id": 2204,
                            "name": "FunctionCall",
                            "src": "8467:13:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616e206f6e6c7920636f7572746573792063616c6c2066726f6d20616374697665207374617465",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Can only courtesy call from active state\"",
                              "value": "Can only courtesy call from active state"
                            },
                            "id": 2205,
                            "name": "Literal",
                            "src": "8482:42:4"
                          }
                        ],
                        "id": 2206,
                        "name": "FunctionCall",
                        "src": "8459:66:4"
                      }
                    ],
                    "id": 2207,
                    "name": "ExpressionStatement",
                    "src": "8459:66:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_4d56eed7f1ed541f18569537d912519876a16a7ac35388487ea8030b138c48b4",
                                  "typeString": "literal_string \"Signers have sufficient collateral\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2208,
                            "name": "Identifier",
                            "src": "8535:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "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_struct$_Deposit_$3893_storage_ptr",
                                          "typeString": "struct DepositUtils.Deposit storage pointer"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1874,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)",
                                      "value": "collateralizationPercentage"
                                    },
                                    "id": 2209,
                                    "name": "Identifier",
                                    "src": "8556:27:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2198,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2210,
                                    "name": "Identifier",
                                    "src": "8584:2:4"
                                  }
                                ],
                                "id": 2211,
                                "name": "FunctionCall",
                                "src": "8556:31:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "undercollateralizedThresholdPercent",
                                  "referencedDeclaration": 3846,
                                  "type": "uint16"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2198,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2212,
                                    "name": "Identifier",
                                    "src": "8606:2:4"
                                  }
                                ],
                                "id": 2213,
                                "name": "MemberAccess",
                                "src": "8606:38:4"
                              }
                            ],
                            "id": 2214,
                            "name": "BinaryOperation",
                            "src": "8556:88:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5369676e65727320686176652073756666696369656e7420636f6c6c61746572616c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Signers have sufficient collateral\"",
                              "value": "Signers have sufficient collateral"
                            },
                            "id": 2215,
                            "name": "Literal",
                            "src": "8658:36:4"
                          }
                        ],
                        "id": 2216,
                        "name": "FunctionCall",
                        "src": "8535:169:4"
                      }
                    ],
                    "id": 2217,
                    "name": "ExpressionStatement",
                    "src": "8535:169:4"
                  },
                  {
                    "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": 2198,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2218,
                                "name": "Identifier",
                                "src": "8714:2:4"
                              }
                            ],
                            "id": 2220,
                            "name": "MemberAccess",
                            "src": "8714:24:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 2221,
                                "name": "Identifier",
                                "src": "8741:5:4"
                              }
                            ],
                            "id": 2222,
                            "name": "MemberAccess",
                            "src": "8741:15:4"
                          }
                        ],
                        "id": 2223,
                        "name": "Assignment",
                        "src": "8714:42:4"
                      }
                    ],
                    "id": 2224,
                    "name": "ExpressionStatement",
                    "src": "8714:42:4"
                  },
                  {
                    "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": "setCourtesyCall",
                              "referencedDeclaration": 3732,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2198,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2225,
                                "name": "Identifier",
                                "src": "8766:2:4"
                              }
                            ],
                            "id": 2227,
                            "name": "MemberAccess",
                            "src": "8766:18:4"
                          }
                        ],
                        "id": 2228,
                        "name": "FunctionCall",
                        "src": "8766:20:4"
                      }
                    ],
                    "id": 2229,
                    "name": "ExpressionStatement",
                    "src": "8766:20:4"
                  },
                  {
                    "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": "logCourtesyCalled",
                              "referencedDeclaration": 5331,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2198,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2230,
                                "name": "Identifier",
                                "src": "8796:2:4"
                              }
                            ],
                            "id": 2232,
                            "name": "MemberAccess",
                            "src": "8796:20:4"
                          }
                        ],
                        "id": 2233,
                        "name": "FunctionCall",
                        "src": "8796:22:4"
                      }
                    ],
                    "id": 2234,
                    "name": "ExpressionStatement",
                    "src": "8796:22:4"
                  }
                ],
                "id": 2235,
                "name": "Block",
                "src": "8449:376:4"
              }
            ],
            "id": 2236,
            "name": "FunctionDefinition",
            "src": "8379:446:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Goes from courtesy call to active.\n @dev        Only callable if collateral is sufficient and the deposit is not expiring.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "exitCourtesyCall",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2269,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 2237,
                        "name": "UserDefinedTypeName",
                        "src": "9052:20:4"
                      }
                    ],
                    "id": 2238,
                    "name": "VariableDeclaration",
                    "src": "9052:31:4"
                  }
                ],
                "id": 2239,
                "name": "ParameterList",
                "src": "9051:33:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2240,
                "name": "ParameterList",
                "src": "9094:0:4"
              },
              {
                "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_0b4aa5e7df6c543c911873291b47880a0ba90fd37b053a680c8d078b6726fbca",
                                  "typeString": "literal_string \"Not currently in courtesy call\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2241,
                            "name": "Identifier",
                            "src": "9104:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inCourtesyCall",
                                  "referencedDeclaration": 3564,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2238,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2242,
                                    "name": "Identifier",
                                    "src": "9112:2:4"
                                  }
                                ],
                                "id": 2243,
                                "name": "MemberAccess",
                                "src": "9112:17:4"
                              }
                            ],
                            "id": 2244,
                            "name": "FunctionCall",
                            "src": "9112:19:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f742063757272656e746c7920696e20636f7572746573792063616c6c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not currently in courtesy call\"",
                              "value": "Not currently in courtesy call"
                            },
                            "id": 2245,
                            "name": "Literal",
                            "src": "9133:32:4"
                          }
                        ],
                        "id": 2246,
                        "name": "FunctionCall",
                        "src": "9104:62:4"
                      }
                    ],
                    "id": 2247,
                    "name": "ExpressionStatement",
                    "src": "9104:62:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_156f6ec553f8a7fda09075901b2422538090da076a98b996e084e2354e780a11",
                                  "typeString": "literal_string \"Deposit is still undercollateralized\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2248,
                            "name": "Identifier",
                            "src": "9176:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "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_struct$_Deposit_$3893_storage_ptr",
                                          "typeString": "struct DepositUtils.Deposit storage pointer"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1874,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)",
                                      "value": "collateralizationPercentage"
                                    },
                                    "id": 2249,
                                    "name": "Identifier",
                                    "src": "9197:27:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2238,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2250,
                                    "name": "Identifier",
                                    "src": "9225:2:4"
                                  }
                                ],
                                "id": 2251,
                                "name": "FunctionCall",
                                "src": "9197:31:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "undercollateralizedThresholdPercent",
                                  "referencedDeclaration": 3846,
                                  "type": "uint16"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2238,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2252,
                                    "name": "Identifier",
                                    "src": "9248:2:4"
                                  }
                                ],
                                "id": 2253,
                                "name": "MemberAccess",
                                "src": "9248:38:4"
                              }
                            ],
                            "id": 2254,
                            "name": "BinaryOperation",
                            "src": "9197:89:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206973207374696c6c20756e646572636f6c6c61746572616c697a6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit is still undercollateralized\"",
                              "value": "Deposit is still undercollateralized"
                            },
                            "id": 2255,
                            "name": "Literal",
                            "src": "9300:38:4"
                          }
                        ],
                        "id": 2256,
                        "name": "FunctionCall",
                        "src": "9176:172:4"
                      }
                    ],
                    "id": 2257,
                    "name": "ExpressionStatement",
                    "src": "9176:172:4"
                  },
                  {
                    "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": "setActive",
                              "referencedDeclaration": 3672,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2238,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2258,
                                "name": "Identifier",
                                "src": "9358:2:4"
                              }
                            ],
                            "id": 2260,
                            "name": "MemberAccess",
                            "src": "9358:12:4"
                          }
                        ],
                        "id": 2261,
                        "name": "FunctionCall",
                        "src": "9358:14:4"
                      }
                    ],
                    "id": 2262,
                    "name": "ExpressionStatement",
                    "src": "9358:14:4"
                  },
                  {
                    "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": "logExitedCourtesyCall",
                              "referencedDeclaration": 5417,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2238,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 2263,
                                "name": "Identifier",
                                "src": "9382:2:4"
                              }
                            ],
                            "id": 2265,
                            "name": "MemberAccess",
                            "src": "9382:24:4"
                          }
                        ],
                        "id": 2266,
                        "name": "FunctionCall",
                        "src": "9382:26:4"
                      }
                    ],
                    "id": 2267,
                    "name": "ExpressionStatement",
                    "src": "9382:26:4"
                  }
                ],
                "id": 2268,
                "name": "Block",
                "src": "9094:321:4"
              }
            ],
            "id": 2269,
            "name": "FunctionDefinition",
            "src": "9026:389:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Notify the contract that the signers are undercollateralized.\n @dev        Calls out to the system for oracle info.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "notifyUndercollateralizedLiquidation",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2297,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 2270,
                        "name": "UserDefinedTypeName",
                        "src": "9664:20:4"
                      }
                    ],
                    "id": 2271,
                    "name": "VariableDeclaration",
                    "src": "9664:31:4"
                  }
                ],
                "id": 2272,
                "name": "ParameterList",
                "src": "9654:47:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2273,
                "name": "ParameterList",
                "src": "9711:0:4"
              },
              {
                "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_115e1e30d3f210a65518ccb02244794c3f1481bb8228eb9918b8863f4fbffcae",
                                  "typeString": "literal_string \"Deposit not in active or courtesy call\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2274,
                            "name": "Identifier",
                            "src": "9721:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inRedeemableState",
                                  "referencedDeclaration": 3419,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2271,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2275,
                                    "name": "Identifier",
                                    "src": "9742:2:4"
                                  }
                                ],
                                "id": 2276,
                                "name": "MemberAccess",
                                "src": "9742:20:4"
                              }
                            ],
                            "id": 2277,
                            "name": "FunctionCall",
                            "src": "9742:22:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206e6f7420696e20616374697665206f7220636f7572746573792063616c6c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit not in active or courtesy call\"",
                              "value": "Deposit not in active or courtesy call"
                            },
                            "id": 2278,
                            "name": "Literal",
                            "src": "9778:40:4"
                          }
                        ],
                        "id": 2279,
                        "name": "FunctionCall",
                        "src": "9721:107:4"
                      }
                    ],
                    "id": 2280,
                    "name": "ExpressionStatement",
                    "src": "9721:107:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c88b5cff93ef45f165f3518f2291d4c4e7b615f79d6dbcfceaded346bad9a2dc",
                                  "typeString": "literal_string \"Deposit has sufficient collateral\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2281,
                            "name": "Identifier",
                            "src": "9838:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "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_struct$_Deposit_$3893_storage_ptr",
                                          "typeString": "struct DepositUtils.Deposit storage pointer"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1874,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)",
                                      "value": "collateralizationPercentage"
                                    },
                                    "id": 2282,
                                    "name": "Identifier",
                                    "src": "9859:27:4"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2271,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2283,
                                    "name": "Identifier",
                                    "src": "9887:2:4"
                                  }
                                ],
                                "id": 2284,
                                "name": "FunctionCall",
                                "src": "9859:31:4"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "severelyUndercollateralizedThresholdPercent",
                                  "referencedDeclaration": 3848,
                                  "type": "uint16"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2271,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2285,
                                    "name": "Identifier",
                                    "src": "9909:2:4"
                                  }
                                ],
                                "id": 2286,
                                "name": "MemberAccess",
                                "src": "9909:46:4"
                              }
                            ],
                            "id": 2287,
                            "name": "BinaryOperation",
                            "src": "9859:96:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206861732073756666696369656e7420636f6c6c61746572616c",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit has sufficient collateral\"",
                              "value": "Deposit has sufficient collateral"
                            },
                            "id": 2288,
                            "name": "Literal",
                            "src": "9969:35:4"
                          }
                        ],
                        "id": 2289,
                        "name": "FunctionCall",
                        "src": "9838:176:4"
                      }
                    ],
                    "id": 2290,
                    "name": "ExpressionStatement",
                    "src": "9838:176:4"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1957,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bool)",
                              "value": "startLiquidation"
                            },
                            "id": 2291,
                            "name": "Identifier",
                            "src": "10024:16:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2271,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 2292,
                            "name": "Identifier",
                            "src": "10041:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 2293,
                            "name": "Literal",
                            "src": "10045:5:4"
                          }
                        ],
                        "id": 2294,
                        "name": "FunctionCall",
                        "src": "10024:27:4"
                      }
                    ],
                    "id": 2295,
                    "name": "ExpressionStatement",
                    "src": "10024:27:4"
                  }
                ],
                "id": 2296,
                "name": "Block",
                "src": "9711:347:4"
              }
            ],
            "id": 2297,
            "name": "FunctionDefinition",
            "src": "9609:449:4"
          },
          {
            "attributes": {
              "documentation": "@notice     Notifies the contract that the courtesy period has elapsed.\n @dev        This is treated as an abort, rather than fraud.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "notifyCourtesyCallExpired",
              "scope": 2330,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 2329,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 2298,
                        "name": "UserDefinedTypeName",
                        "src": "10292:20:4"
                      }
                    ],
                    "id": 2299,
                    "name": "VariableDeclaration",
                    "src": "10292:31:4"
                  }
                ],
                "id": 2300,
                "name": "ParameterList",
                "src": "10291:33:4"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2301,
                "name": "ParameterList",
                "src": "10346:0:4"
              },
              {
                "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_8ea2f2f19e303b0653d43dfad58a51313bf76fba7989c697d30bd376c8090e6a",
                                  "typeString": "literal_string \"Not in a courtesy call period\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2302,
                            "name": "Identifier",
                            "src": "10356:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inCourtesyCall",
                                  "referencedDeclaration": 3564,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2299,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 2303,
                                    "name": "Identifier",
                                    "src": "10364:2:4"
                                  }
                                ],
                                "id": 2304,
                                "name": "MemberAccess",
                                "src": "10364:17:4"
                              }
                            ],
                            "id": 2305,
                            "name": "FunctionCall",
                            "src": "10364:19:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f7420696e206120636f7572746573792063616c6c20706572696f64",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not in a courtesy call period\"",
                              "value": "Not in a courtesy call period"
                            },
                            "id": 2306,
                            "name": "Literal",
                            "src": "10385:31:4"
                          }
                        ],
                        "id": 2307,
                        "name": "FunctionCall",
                        "src": "10356:61:4"
                      }
                    ],
                    "id": 2308,
                    "name": "ExpressionStatement",
                    "src": "10356:61:4"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_243c18d3532b5f66e3b93067b5c7846191fec4f4139b2644d9b3ccf2cc448d51",
                                  "typeString": "literal_string \"Courtesy period has not elapsed\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2309,
                            "name": "Identifier",
                            "src": "10427:7:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "timestamp",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18350,
                                      "type": "block",
                                      "value": "block"
                                    },
                                    "id": 2310,
                                    "name": "Identifier",
                                    "src": "10448:5:4"
                                  }
                                ],
                                "id": 2311,
                                "name": "MemberAccess",
                                "src": "10448:15:4"
                              },
                              {
                                "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_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 16749,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "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": 2299,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 2312,
                                            "name": "Identifier",
                                            "src": "10483:2:4"
                                          }
                                        ],
                                        "id": 2313,
                                        "name": "MemberAccess",
                                        "src": "10483:24:4"
                                      }
                                    ],
                                    "id": 2314,
                                    "name": "MemberAccess",
                                    "src": "10483:28:4"
                                  },
                                  {
                                    "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": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "getCourtesyCallTimeout",
                                          "referencedDeclaration": 6748,
                                          "type": "function () pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6757,
                                              "type": "type(library TBTCConstants)",
                                              "value": "TBTCConstants"
                                            },
                                            "id": 2315,
                                            "name": "Identifier",
                                            "src": "10533:13:4"
                                          }
                                        ],
                                        "id": 2316,
                                        "name": "MemberAccess",
                                        "src": "10533:36:4"
                                      }
                                    ],
                                    "id": 2317,
                                    "name": "FunctionCall",
                                    "src": "10533:38:4"
                                  }
                                ],
                                "id": 2318,
                                "name": "FunctionCall",
                                "src": "10483:106:4"
                              }
                            ],
                            "id": 2319,
                            "name": "BinaryOperation",
                            "src": "10448:141:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "436f75727465737920706572696f6420686173206e6f7420656c6170736564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Courtesy period has not elapsed\"",
                              "value": "Courtesy period has not elapsed"
                            },
                            "id": 2320,
                            "name": "Literal",
                            "src": "10603:33:4"
                          }
                        ],
                        "id": 2321,
                        "name": "FunctionCall",
                        "src": "10427:219:4"
                      }
                    ],
                    "id": 2322,
                    "name": "ExpressionStatement",
                    "src": "10427:219:4"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1957,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bool)",
                              "value": "startLiquidation"
                            },
                            "id": 2323,
                            "name": "Identifier",
                            "src": "10656:16:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2299,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 2324,
                            "name": "Identifier",
                            "src": "10673:2:4"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 2325,
                            "name": "Literal",
                            "src": "10677:5:4"
                          }
                        ],
                        "id": 2326,
                        "name": "FunctionCall",
                        "src": "10656:27:4"
                      }
                    ],
                    "id": 2327,
                    "name": "ExpressionStatement",
                    "src": "10656:27:4"
                  }
                ],
                "id": 2328,
                "name": "Block",
                "src": "10346:344:4"
              }
            ],
            "id": 2329,
            "name": "FunctionDefinition",
            "src": "10257:433:4"
          }
        ],
        "id": 2330,
        "name": "ContractDefinition",
        "src": "692:10000:4"
      }
    ],
    "id": 2331,
    "name": "SourceUnit",
    "src": "0:10693:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "TBTCConstants": "0xb1cd05843856750cA058965511edfAA9E55cDF02",
        "OutsourceDepositLogging": "0xb131FcDE5910d616C6f36421153f4608b6175Bcb",
        "DepositStates": "0xe79c67D88274e07F0cecB2455DCabe23B304b525",
        "DepositUtils": "0xc9077A33E13422358af7C873188a3E4A3D731A86"
      },
      "address": "0x3473DaEDf59f4785E9902218E3D40CB1a6343c3A",
      "transactionHash": "0x13fb802eed2f1f37e89dc789e13c90f4e5cd4e00a46de2ed26191ea0024fe232"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.218Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "collateralizationPercentage(DepositUtils.Deposit storage)": {
        "details": "Compares the bond value and lot value.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "Collateralization percentage as uint."
      },
      "exitCourtesyCall(DepositUtils.Deposit storage)": {
        "details": "Only callable if collateral is sufficient and the deposit is not expiring.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "notifyCourtesyCall(DepositUtils.Deposit storage)": {
        "details": "Calls out to the system for oracle info.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "notifyCourtesyCallExpired(DepositUtils.Deposit storage)": {
        "details": "This is treated as an abort, rather than fraud.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "notifyUndercollateralizedLiquidation(DepositUtils.Deposit storage)": {
        "details": "Calls out to the system for oracle info.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "provideECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "details": "Calls out to the keep to verify if there was fraud.",
        "params": {
          "_d": "Deposit storage pointer.",
          "_preimage": "The sha256 preimage of the digest.",
          "_r": "Signature R value.",
          "_s": "Signature S value.",
          "_signedDigest": "The digest signed by the signature vrs tuple.",
          "_v": "Signature recovery value."
        }
      },
      "purchaseSignerBondsAtAuction(DepositUtils.Deposit storage)": {
        "details": "For interface, reading auctionValue will give a past value. the current is better.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "submitSignatureFraud(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "details": "Calls out to the keep contract. this could get expensive if preimage      is large.",
        "params": {
          "_d": "Deposit storage pointer.",
          "_preimage": "The sha256 preimage of the digest.",
          "_r": "Signature R value.",
          "_s": "Signature S value.",
          "_signedDigest": "The digest signed by the signature vrs tuple.",
          "_v": "Signature recovery value."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "collateralizationPercentage(DepositUtils.Deposit storage)": {
        "notice": "Determines the collateralization percentage of the signing group."
      },
      "exitCourtesyCall(DepositUtils.Deposit storage)": {
        "notice": "Goes from courtesy call to active."
      },
      "notifyCourtesyCall(DepositUtils.Deposit storage)": {
        "notice": "Notify the contract that the signers are undercollateralized."
      },
      "notifyCourtesyCallExpired(DepositUtils.Deposit storage)": {
        "notice": "Notifies the contract that the courtesy period has elapsed."
      },
      "notifyUndercollateralizedLiquidation(DepositUtils.Deposit storage)": {
        "notice": "Notify the contract that the signers are undercollateralized."
      },
      "provideECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "notice": "Anyone can provide a signature that was not requested to prove fraud."
      },
      "purchaseSignerBondsAtAuction(DepositUtils.Deposit storage)": {
        "notice": "Closes an auction and purchases the signer bonds. Payout to buyer, funder, then signers if not fraud."
      },
      "submitSignatureFraud(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "notice": "Notifies the keep contract of fraud. Reverts if not fraud."
      }
    }
  }
}