{
  "contractName": "ExpiryProxy",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidatorAssetRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_expiry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_dolomiteMargin",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DOLOMITE_MARGIN",
      "outputs": [
        {
          "internalType": "contract IDolomiteMargin",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EXPIRY",
      "outputs": [
        {
          "internalType": "contract IExpiry",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "LIQUIDATOR_ASSET_REGISTRY",
      "outputs": [
        {
          "internalType": "contract ILiquidatorAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "_solidAccount",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "_liquidAccount",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_owedMarket",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_heldMarket",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_expirationTimestamp",
          "type": "uint32"
        }
      ],
      "name": "expire",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_liquidatorAssetRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expiry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EXPIRY\",\"outputs\":[{\"internalType\":\"contract IExpiry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"LIQUIDATOR_ASSET_REGISTRY\",\"outputs\":[{\"internalType\":\"contract ILiquidatorAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"_solidAccount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"_liquidAccount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_owedMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_heldMarket\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_expirationTimestamp\",\"type\":\"uint32\"}],\"name\":\"expire\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * Contract for expiring other accounts in DolomiteMargin.\",\"methods\":{},\"title\":\"ExpiryProxy\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/ExpiryProxy.sol\":\"ExpiryProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/HasLiquidatorRegistry.sol\":{\"keccak256\":\"0xf7fb6d26d662f5a7ae5df8e30110664c7254f1a4969c31a3504e166018358e42\",\"urls\":[\"bzz-raw://b1a8adc3fdddce8ad10ce2420570b73218c3dd23238ab0000938051194834389\",\"dweb:/ipfs/QmPE47PxyM2xEat3xCWkiogpNRGkx26KLePGQZhGRGJpk8\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/LiquidatorProxyBase.sol\":{\"keccak256\":\"0x5a7bc34966d0bbaf860283dff729819733c6aeb2d74969de4faa77a38ed0e580\",\"urls\":[\"bzz-raw://4fc391dc8defc010d4736300e52159039540d881b256a62f425de790da44cd48\",\"dweb:/ipfs/QmWGcvumKySkGmCPtGQcw3e6X1Fz17e33mV7QpXr9fgWpV\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xa7b197139e570e823cab42c3b8500c9c5edc8a40110970a7d6fe60f05864ba10\",\"urls\":[\"bzz-raw://4f469be063d8f694c5277650bc53ac2c0d164f62e36c6a9ab7dad126479990a9\",\"dweb:/ipfs/Qme4sTbGi4T2QhsJSweqGzqm5rxQkypy27g1vLy8ipVijV\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/ILiquidatorAssetRegistry.sol\":{\"keccak256\":\"0x0d99615ee12fad08fbdf59a67683af9c7cdcfd2f25cf20b6767ebb6988eec514\",\"urls\":[\"bzz-raw://90230d7a44d9936cda8d1b1fef170daf91750b97d3da9634ed6c079fb8dbd15a\",\"dweb:/ipfs/QmfQxDE36en2hecxS4Y2i4BH6TsSEDEzKNxooysW4GsdKb\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol\":{\"keccak256\":\"0x5488dd7eae5ce96e479445f19301d9dd44d292a2d6739b9da1fe948eeb41edc4\",\"urls\":[\"bzz-raw://06977e07aea4d893db696173f3ee01a84008770c4e0d81fb5eb82af3a597ceaa\",\"dweb:/ipfs/QmYiH8CsXEbHypJ2gN31LnZv2tfzd2RBuSKoRgx2EbBw26\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol\":{\"keccak256\":\"0x76fd16d615fe7cfceaf775b4e6524fd0462606c802b082498c768a7a4ca01a20\",\"urls\":[\"bzz-raw://56068145e300cde1c77c22e38cb753378abf2f0d4613dcb203e33ff101f169e2\",\"dweb:/ipfs/QmXvMzr9n7vzMHdUPgnc58KX4mrbQAqkq4kDETaj5Y55ZY\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/DolomiteVersionLib.sol\":{\"keccak256\":\"0x2b53e388a5307c028d1be1ab654eacb46bd445b24beb367c0782bd408f2a28b4\",\"urls\":[\"bzz-raw://f1b9f5d89093f45e4b83c3220c2a426f4e399c7bd4ba0a6fa95e1ac6a25f77f6\",\"dweb:/ipfs/QmdoQ2xZnB7r7q2i1gEkzn5KyuiDQW1oAjDUHB6x6DG8Fy\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/ExpiryProxy.sol\":{\"keccak256\":\"0xffdc95b316fcb18a363c75fcb39314fd0ba1087b8fa4d4743124bedfe4b2353d\",\"urls\":[\"bzz-raw://bbe518cbb67f866a43bab9bef5712bfc658cb0ffc92d58ebb16717969dc8d638\",\"dweb:/ipfs/Qmd6JydwUjd3UwjYNo3DGLGN1v4d4Kk5uGJ2cibP4M3yTN\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
  "bytecode": "0x60806040526a45787069727950726f787960a81b6002553480156200002357600080fd5b5060405162001e4338038062001e438339810160408190526200004691620000a9565b600080546001600160a01b039485166001600160a01b0319918216179091556001805460ff60a01b199386169083161792909216600160a01b179091556003805492909316911617905562000129565b8051620000a3816200010f565b92915050565b600080600060608486031215620000bf57600080fd5b6000620000cd868662000096565b9350506020620000e08682870162000096565b9250506040620000f38682870162000096565b9150509250925092565b60006001600160a01b038216620000a3565b6200011a81620000fd565b81146200012657600080fd5b50565b611d0a80620001396000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806315c14a4a146100515780634530a2d71461006f5780634a74e0df14610077578063cf530f881461008c575b600080fd5b610059610094565b6040516100669190611a58565b60405180910390f35b6100596100b0565b61008a6100853660046114a9565b6100cc565b005b610059610510565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b826100d68161052c565b826100e08161052c565b60015474010000000000000000000000000000000000000000900460ff1661013d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a97565b60405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055865161025b9073ffffffffffffffffffffffffffffffffffffffff16331480610231575060015488516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf0916101e19133906004016119f8565b60206040518083038186803b1580156101f957600080fd5b505afa15801561020d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102319190810190611483565b6002547f53656e646572206e6f74206f70657261746f720000000000000000000000000033610621565b6003546040517f1be7dd8300000000000000000000000000000000000000000000000000000000815261033c9173ffffffffffffffffffffffffffffffffffffffff1690631be7dd83906102b5908a908a90600401611aa7565b60206040518083038186803b1580156102cd57600080fd5b505afa1580156102e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103059190810190611594565b63ffffffff168463ffffffff16146002547f496e76616c69642065787069726174696f6e2074696d657374616d700000000061071d565b6040805160028082526060828101909352816020015b61035a6112da565b815260200190600190039081610352579050509050878160008151811061037d57fe5b6020026020010181905250868160018151811061039657fe5b6020908102919091010152604080516001808252818301909252606091816020015b6103c06112f1565b8152602001906001900390816103b857905050905060008060006103e68b8b8b8b61076c565b925092509250610421600060018c8c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d898989610b54565b8460008151811061042e57fe5b60209081029190910101526001546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a45906104919088908890600401611a13565b600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000546040517fd9f4760100000000000000000000000000000000000000000000000000000000815261061e9173ffffffffffffffffffffffffffffffffffffffff169063d9f47601906105869085903090600401611b05565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d69190810190611483565b7f4861734c697175696461746f72526567697374727900000000000000000000007f4173736574206e6f742077686974656c6973746564000000000000000000000084610cba565b50565b836107175761062f83610d1c565b7f3a2000000000000000000000000000000000000000000000000000000000000061065984610d1c565b7f203c00000000000000000000000000000000000000000000000000000000000061068385610df6565b6040516106b99594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161199a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261013491600401611a66565b50505050565b826107675761072b82610d1c565b7f3a2000000000000000000000000000000000000000000000000000000000000061075583610d1c565b6040516020016106b993929190611972565b505050565b6001546040517fc190c2ec00000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff9091169063c190c2ec906107cd908b908a90600401611aa7565b604080518083038186803b1580156107e457600080fd5b505afa1580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061081c9190810190611576565b602001516001546040517fc190c2ec00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063c190c2ec9061087e908c908c90600401611aa7565b604080518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108cd9190810190611576565b602001516001546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e9061092d908b90600401611af7565b60206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097d919081019061151e565b516001546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e906109da908d90600401611af7565b60206040518083038186803b1580156109f257600080fd5b505afa158015610a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2a919081019061151e565b519050610a35611350565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b8301da8d8c8e8d6040518563ffffffff1660e01b8152600401610a969493929190611ac2565b604080518083038186803b158015610aad57600080fd5b505afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae5919081019061153c565b9150610af99050848363ffffffff610f6d16565b610b09868563ffffffff610f6d16565b1015610b2c57849750610b2185848360000151610fca565b965060019550610b45565b610b3b84826000015185611039565b9750839650600095505b50505050509450945094915050565b610b5c6112f1565b610b64611363565b82610b94576040805160808101909152600181526020810160008152602001600081526020018590529050610bc2565b82610b9b57fe5b60408051608081019091526000808252602082019081526020016000815260200186905290505b60408051610100810190915280600581526020018c81526020018281526020018415610bee5789610bf0565b8a5b81526020018415610c01578a610c03565b895b81526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200160018b89604051602001610c3f929190611b20565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c7b9291602001611a38565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290529b9a5050505050505050505050565b8361071757610cc883610d1c565b7f3a20000000000000000000000000000000000000000000000000000000000000610cf284610d1c565b7f203c0000000000000000000000000000000000000000000000000000000000006106838561104f565b60608082604051602001610d30919061195d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610dd95781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610d9c57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610dd45760010181529050610df1565b610d63565b5060408051600080825260208201909252905b509150505b919050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610e4257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610e8357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610dec5760028102610ece600f851661115e565b838260290381518110610edd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610f1f600f851661115e565b838260280381518110610f2e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610eb5565b600082610f7c57506000610fc4565b82820282848281610f8957fe5b0414610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a87565b90505b92915050565b6000831580610fd7575082155b15610fee57610fe7600083611180565b9050611032565b61102f6001611023846110178361100b8a8a63ffffffff610f6d16565b9063ffffffff6111c216565b9063ffffffff61118016565b9063ffffffff61120416565b90505b9392505050565b600061102f82611017868663ffffffff610f6d16565b606081611090575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610df1565b8160005b81156110a857600101600a82049150611094565b6060816040519080825280601f01601f1916602001820160405280156110d5576020820181803883390190505b508593509050815b8015611155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061111b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506110dd565b50949350505050565b6000600a82101561117657506030810160f81b610df1565b5060570160f81b90565b6000610fc183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611243565b6000610fc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611294565b600082820183811015610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a77565b6000818361127e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101349190611a66565b50600083858161128a57fe5b0495945050505050565b600081848411156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101349190611a66565b505050900390565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101611311611363565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060200160405280600081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035610fc481611c98565b8051610fc481611cac565b6000604082840312156113b457600080fd5b6113be6040611b3b565b905060006113cc848461138c565b82525060206113dd84848301611457565b60208301525092915050565b6000602082840312156113fb57600080fd5b6114056020611b3b565b905060006114138484611462565b82525092915050565b60006040828403121561142e57600080fd5b6114386040611b3b565b905060006114468484611397565b82525060206113dd84848301611462565b8035610fc481611cb5565b8051610fc481611cb5565b8035610fc481611cbe565b8051610fc481611cbe565b60006020828403121561149557600080fd5b60006114a18484611397565b949350505050565b600080600080600060e086880312156114c157600080fd5b60006114cd88886113a2565b95505060406114de888289016113a2565b94505060806114ef88828901611457565b93505060a061150088828901611457565b92505060c06115118882890161146d565b9150509295509295909350565b60006020828403121561153057600080fd5b60006114a184846113e9565b6000806040838503121561154f57600080fd5b600061155b85856113e9565b925050602061156c858286016113e9565b9150509250929050565b60006040828403121561158857600080fd5b60006114a1848461141c565b6000602082840312156115a657600080fd5b60006114a18484611478565b6000610fc18383611836565b60006115ca838361192b565b505060400190565b6115db81611c08565b82525050565b6115db81611b75565b60006115f582611b68565b6115ff8185611b6c565b93508360208202850161161185611b62565b8060005b8581101561164b578484038952815161162e85826115b2565b945061163983611b62565b60209a909a0199925050600101611615565b5091979650505050505050565b600061166382611b68565b61166d8185611b6c565b935061167883611b62565b8060005b838110156116a657815161169088826115be565b975061169b83611b62565b92505060010161167c565b509495945050505050565b6115db81611b80565b6115db6116c682611b85565b611bcf565b6115db6116c682611baa565b6115db6116c682611bcf565b60006116ee82611b68565b6116f88185611b6c565b9350611708818560208601611c30565b61171181611c5c565b9093019392505050565b600061172682611b68565b6117308185610df1565b9350611740818560208601611c30565b9290920192915050565b6115db81611c0f565b6115db81611c1a565b6115db81611c25565b6000611772601b83611b6c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117ab602183611b6c565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061180a601f83611b6c565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b805160009061016084019061184b8582611753565b50602083015161185e602086018261194b565b50604083015161187160408601826118e1565b50606083015161188460c086018261194b565b50608083015161189760e086018261194b565b5060a08301516118ab6101008601826115e1565b5060c08301516118bf61012086018261194b565b5060e08301518482036101408601526118d882826116e3565b95945050505050565b805160808301906118f284826116b1565b506020820151611905602085018261175c565b506040820151611918604085018261175c565b506060820151610717606085018261194b565b8051604083019061193c84826115e1565b50602082015161071760208501825b6115db81611bcf565b6115db81611bff565b600061196982846116d7565b50602001919050565b600061197e828661171b565b915061198a82856116cb565b6002820191506118d8828461171b565b60006119a6828961171b565b91506119b282886116cb565b6002820191506119c2828761171b565b91506119ce82866116cb565b6002820191506119de828561171b565b91506119ea82846116ba565b506001019695505050505050565b60408101611a0682856115e1565b61103260208301846115d2565b60408082528101611a248185611658565b9050818103602083015261102f81846115ea565b60408101611a4682856116b1565b818103602083015261102f81846116e3565b60208101610fc4828461174a565b60208082528101610fc181846116e3565b60208082528101610fc481611765565b60208082528101610fc48161179e565b60208082528101610fc4816117fd565b60608101611ab5828561192b565b611032604083018461194b565b60a08101611ad0828761192b565b611add604083018661194b565b611aea606083018561194b565b6118d86080830184611954565b60208101610fc4828461194b565b60408101611b13828561194b565b61103260208301846115e1565b60408101611b2e828561194b565b6110326020830184611954565b60405181810167ffffffffffffffff81118282101715611b5a57600080fd5b604052919050565b60200190565b5190565b90815260200190565b6000610fc482611be6565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610df181611c84565b80610df181611c8e565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6000610fc4825b6000610fc482611b75565b6000610fc482611bd2565b6000610fc482611bdc565b60005b83811015611c4b578181015183820152602001611c33565b838111156107175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061061e57fe5b6002811061061e57fe5b611ca181611b75565b811461061e57600080fd5b611ca181611b80565b611ca181611bcf565b611ca181611bff56fea365627a7a72315820eebbb43161e8462803d5dfb43c578580fcb9b068f1e8d625bcf5665f89a538fe6c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806315c14a4a146100515780634530a2d71461006f5780634a74e0df14610077578063cf530f881461008c575b600080fd5b610059610094565b6040516100669190611a58565b60405180910390f35b6100596100b0565b61008a6100853660046114a9565b6100cc565b005b610059610510565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b826100d68161052c565b826100e08161052c565b60015474010000000000000000000000000000000000000000900460ff1661013d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a97565b60405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055865161025b9073ffffffffffffffffffffffffffffffffffffffff16331480610231575060015488516040517f3a031bf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691633a031bf0916101e19133906004016119f8565b60206040518083038186803b1580156101f957600080fd5b505afa15801561020d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102319190810190611483565b6002547f53656e646572206e6f74206f70657261746f720000000000000000000000000033610621565b6003546040517f1be7dd8300000000000000000000000000000000000000000000000000000000815261033c9173ffffffffffffffffffffffffffffffffffffffff1690631be7dd83906102b5908a908a90600401611aa7565b60206040518083038186803b1580156102cd57600080fd5b505afa1580156102e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103059190810190611594565b63ffffffff168463ffffffff16146002547f496e76616c69642065787069726174696f6e2074696d657374616d700000000061071d565b6040805160028082526060828101909352816020015b61035a6112da565b815260200190600190039081610352579050509050878160008151811061037d57fe5b6020026020010181905250868160018151811061039657fe5b6020908102919091010152604080516001808252818301909252606091816020015b6103c06112f1565b8152602001906001900390816103b857905050905060008060006103e68b8b8b8b61076c565b925092509250610421600060018c8c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d898989610b54565b8460008151811061042e57fe5b60209081029190910101526001546040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a67a6a45906104919088908890600401611a13565b600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000546040517fd9f4760100000000000000000000000000000000000000000000000000000000815261061e9173ffffffffffffffffffffffffffffffffffffffff169063d9f47601906105869085903090600401611b05565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d69190810190611483565b7f4861734c697175696461746f72526567697374727900000000000000000000007f4173736574206e6f742077686974656c6973746564000000000000000000000084610cba565b50565b836107175761062f83610d1c565b7f3a2000000000000000000000000000000000000000000000000000000000000061065984610d1c565b7f203c00000000000000000000000000000000000000000000000000000000000061068385610df6565b6040516106b99594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161199a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261013491600401611a66565b50505050565b826107675761072b82610d1c565b7f3a2000000000000000000000000000000000000000000000000000000000000061075583610d1c565b6040516020016106b993929190611972565b505050565b6001546040517fc190c2ec00000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff9091169063c190c2ec906107cd908b908a90600401611aa7565b604080518083038186803b1580156107e457600080fd5b505afa1580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061081c9190810190611576565b602001516001546040517fc190c2ec00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063c190c2ec9061087e908c908c90600401611aa7565b604080518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108cd9190810190611576565b602001516001546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e9061092d908b90600401611af7565b60206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097d919081019061151e565b516001546040517f8928378e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690638928378e906109da908d90600401611af7565b60206040518083038186803b1580156109f257600080fd5b505afa158015610a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2a919081019061151e565b519050610a35611350565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b8301da8d8c8e8d6040518563ffffffff1660e01b8152600401610a969493929190611ac2565b604080518083038186803b158015610aad57600080fd5b505afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae5919081019061153c565b9150610af99050848363ffffffff610f6d16565b610b09868563ffffffff610f6d16565b1015610b2c57849750610b2185848360000151610fca565b965060019550610b45565b610b3b84826000015185611039565b9750839650600095505b50505050509450945094915050565b610b5c6112f1565b610b64611363565b82610b94576040805160808101909152600181526020810160008152602001600081526020018590529050610bc2565b82610b9b57fe5b60408051608081019091526000808252602082019081526020016000815260200186905290505b60408051610100810190915280600581526020018c81526020018281526020018415610bee5789610bf0565b8a5b81526020018415610c01578a610c03565b895b81526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200160018b89604051602001610c3f929190611b20565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c7b9291602001611a38565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290529b9a5050505050505050505050565b8361071757610cc883610d1c565b7f3a20000000000000000000000000000000000000000000000000000000000000610cf284610d1c565b7f203c0000000000000000000000000000000000000000000000000000000000006106838561104f565b60608082604051602001610d30919061195d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015610dd95781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110610d9c57fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610dd45760010181529050610df1565b610d63565b5060408051600080825260208201909252905b509150505b919050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110610e4257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110610e8357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015610dec5760028102610ece600f851661115e565b838260290381518110610edd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610f1f600f851661115e565b838260280381518110610f2e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610eb5565b600082610f7c57506000610fc4565b82820282848281610f8957fe5b0414610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a87565b90505b92915050565b6000831580610fd7575082155b15610fee57610fe7600083611180565b9050611032565b61102f6001611023846110178361100b8a8a63ffffffff610f6d16565b9063ffffffff6111c216565b9063ffffffff61118016565b9063ffffffff61120416565b90505b9392505050565b600061102f82611017868663ffffffff610f6d16565b606081611090575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610df1565b8160005b81156110a857600101600a82049150611094565b6060816040519080825280601f01601f1916602001820160405280156110d5576020820181803883390190505b508593509050815b8015611155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061111b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506110dd565b50949350505050565b6000600a82101561117657506030810160f81b610df1565b5060570160f81b90565b6000610fc183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611243565b6000610fc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611294565b600082820183811015610fc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013490611a77565b6000818361127e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101349190611a66565b50600083858161128a57fe5b0495945050505050565b600081848411156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101349190611a66565b505050900390565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101611311611363565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060200160405280600081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035610fc481611c98565b8051610fc481611cac565b6000604082840312156113b457600080fd5b6113be6040611b3b565b905060006113cc848461138c565b82525060206113dd84848301611457565b60208301525092915050565b6000602082840312156113fb57600080fd5b6114056020611b3b565b905060006114138484611462565b82525092915050565b60006040828403121561142e57600080fd5b6114386040611b3b565b905060006114468484611397565b82525060206113dd84848301611462565b8035610fc481611cb5565b8051610fc481611cb5565b8035610fc481611cbe565b8051610fc481611cbe565b60006020828403121561149557600080fd5b60006114a18484611397565b949350505050565b600080600080600060e086880312156114c157600080fd5b60006114cd88886113a2565b95505060406114de888289016113a2565b94505060806114ef88828901611457565b93505060a061150088828901611457565b92505060c06115118882890161146d565b9150509295509295909350565b60006020828403121561153057600080fd5b60006114a184846113e9565b6000806040838503121561154f57600080fd5b600061155b85856113e9565b925050602061156c858286016113e9565b9150509250929050565b60006040828403121561158857600080fd5b60006114a1848461141c565b6000602082840312156115a657600080fd5b60006114a18484611478565b6000610fc18383611836565b60006115ca838361192b565b505060400190565b6115db81611c08565b82525050565b6115db81611b75565b60006115f582611b68565b6115ff8185611b6c565b93508360208202850161161185611b62565b8060005b8581101561164b578484038952815161162e85826115b2565b945061163983611b62565b60209a909a0199925050600101611615565b5091979650505050505050565b600061166382611b68565b61166d8185611b6c565b935061167883611b62565b8060005b838110156116a657815161169088826115be565b975061169b83611b62565b92505060010161167c565b509495945050505050565b6115db81611b80565b6115db6116c682611b85565b611bcf565b6115db6116c682611baa565b6115db6116c682611bcf565b60006116ee82611b68565b6116f88185611b6c565b9350611708818560208601611c30565b61171181611c5c565b9093019392505050565b600061172682611b68565b6117308185610df1565b9350611740818560208601611c30565b9290920192915050565b6115db81611c0f565b6115db81611c1a565b6115db81611c25565b6000611772601b83611b6c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117ab602183611b6c565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061180a601f83611b6c565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b805160009061016084019061184b8582611753565b50602083015161185e602086018261194b565b50604083015161187160408601826118e1565b50606083015161188460c086018261194b565b50608083015161189760e086018261194b565b5060a08301516118ab6101008601826115e1565b5060c08301516118bf61012086018261194b565b5060e08301518482036101408601526118d882826116e3565b95945050505050565b805160808301906118f284826116b1565b506020820151611905602085018261175c565b506040820151611918604085018261175c565b506060820151610717606085018261194b565b8051604083019061193c84826115e1565b50602082015161071760208501825b6115db81611bcf565b6115db81611bff565b600061196982846116d7565b50602001919050565b600061197e828661171b565b915061198a82856116cb565b6002820191506118d8828461171b565b60006119a6828961171b565b91506119b282886116cb565b6002820191506119c2828761171b565b91506119ce82866116cb565b6002820191506119de828561171b565b91506119ea82846116ba565b506001019695505050505050565b60408101611a0682856115e1565b61103260208301846115d2565b60408082528101611a248185611658565b9050818103602083015261102f81846115ea565b60408101611a4682856116b1565b818103602083015261102f81846116e3565b60208101610fc4828461174a565b60208082528101610fc181846116e3565b60208082528101610fc481611765565b60208082528101610fc48161179e565b60208082528101610fc4816117fd565b60608101611ab5828561192b565b611032604083018461194b565b60a08101611ad0828761192b565b611add604083018661194b565b611aea606083018561194b565b6118d86080830184611954565b60208101610fc4828461194b565b60408101611b13828561194b565b61103260208301846115e1565b60408101611b2e828561194b565b6110326020830184611954565b60405181810167ffffffffffffffff81118282101715611b5a57600080fd5b604052919050565b60200190565b5190565b90815260200190565b6000610fc482611be6565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80610df181611c84565b80610df181611c8e565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b6000610fc4825b6000610fc482611b75565b6000610fc482611bd2565b6000610fc482611bdc565b60005b83811015611c4b578181015183820152602001611c33565b838111156107175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061061e57fe5b6002811061061e57fe5b611ca181611b75565b811461061e57600080fd5b611ca181611b80565b611ca181611bcf565b611ca181611bff56fea365627a7a72315820eebbb43161e8462803d5dfb43c578580fcb9b068f1e8d625bcf5665f89a538fe6c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "1843:3853:50:-;;;-1:-1:-1;;;2010:36:50;;2173:268;8:9:-1;5:2;;;30:1;27;20:12;5:2;2173:268:50;;;;;;;;;;;;;;;;;;;;;1488:25:3;:78;;-1:-1:-1;;;;;1488:78:3;;;-1:-1:-1;;;;;;1488:78:3;;;;;;;;1302:50:6;;-1:-1:-1;;;;1302:50:6;;;;;;;1421:18:156;;;;-1:-1:-1;;;1421:18:156;;;;2409:6:50;:25;;;;;;;;;;;1843:3853;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:535;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;311:1;308;301:12;263:2;346:1;363:64;419:7;399:9;363:64;;;353:74;;325:108;464:2;482:64;538:7;529:6;518:9;514:22;482:64;;;472:74;;443:109;583:2;601:64;657:7;648:6;637:9;633:22;601:64;;;591:74;;562:109;257:424;;;;;;688:91;;-1:-1;;;;;848:54;;750:24;831:76;914:117;983:24;1001:5;983:24;;;976:5;973:35;963:2;;1022:1;1019;1012:12;963:2;957:74;;;1843:3853:50;;;;;;",
  "deployedSourceMap": "1843:3853:50:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1843:3853:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:38:6;;;:::i;:::-;;;;;;;;;;;;;;;;2099:21:50;;;:::i;2447:1681::-;;;;;;;;;:::i;:::-;;953:57:3;;;:::i;1130:38:6:-;;;;;;:::o;2099:21:50:-;;;;;;:::o;2447:1681::-;2714:11;1139:39:3;1168:9;1139:28;:39::i;:::-;2775:11:50;1139:39:3;1168:9;1139:28;:39::i;:::-;1934:11:156;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;;;;;2849::50;;2823:217;;2849:33;;2872:10;2849:33;;:104;;-1:-1:-1;2886:15:50;;2921:19;;2886:67;;;;;:15;;;;;:34;;:67;;2942:10;;2886:67;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2886:67:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2886:67:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2886:67:50;;;;;;;;;2967:4;;2823:217;3020:10;2823:12;:217::i;:::-;3100:6;;:45;;;;;3050:167;;3100:6;;;:16;;:45;;3117:14;;3133:11;;3100:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3100:45:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3100:45:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3100:45:50;;;;;;;;;3076:69;;:20;:69;;;3159:4;;3050:167;:12;:167::i;:::-;3291:21;;;3310:1;3291:21;;;3258:30;3291:21;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3258:54;;3336:13;3322:8;3331:1;3322:11;;;;;;;;;;;;;:27;;;;3373:14;3359:8;3368:1;3359:11;;;;;;;;;;;;;;;;;:28;3436:27;;;3461:1;3436:27;;;;;;;;;3398:35;;3436:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3398:65;;3474:33;3509:26;3537:16;3557:146;3595:14;3623:11;3648;3673:20;3557:24;:146::i;:::-;3473:230;;;;;;3726:342;3808:1;3848;3863:11;3888;3921:6;;;;;;;;;;;3942:20;3976:25;4015:18;4047:11;3726:44;:342::i;:::-;3713:7;3721:1;3713:10;;;;;;;;;;;;;;;;;:355;4079:15;;:42;;;;;:15;;;;;:23;;:42;;4103:8;;4113:7;;4079:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4079:42:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2244:4:156;2230:18;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;2447:1681:50:o;953:57:3:-;;;;;;:::o;1632:286::-;1739:25;;:84;;;;;1713:198;;1739:25;;;:58;;:84;;1798:9;;1817:4;;1739:84;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1739:84:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1739:84:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1739:84:3;;;;;;;;;1837:4;1713:198;1892:9;1713:12;:198::i;:::-;1632:286;:::o;2962:561:99:-;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;:::-;3194:280;;;;;;;;;3446:6;;3194:280;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;3194:280:99;;;;3142:364;;;;;;;;;3117:400;2962:561;;;;:::o;1294:426::-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;1423:291;1294:426;;;:::o;4134:1560:50:-;4451:15;;:58;;;;;4336:33;;;;;;;;4451:15;;;;;:29;;:58;;4481:14;;4497:11;;4451:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4451:58:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4451:58:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4451:58:50;;;;;;;;;:64;;;4549:15;;:58;;;;;4451:64;;-1:-1:-1;4525:21:50;;4549:15;;;;;:29;;:58;;4579:14;;4595:11;;4549:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4549:58:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4549:58:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4549:58:50;;;;;;;;;:64;;;4644:15;;:43;;;;;4549:64;;-1:-1:-1;4624:17:50;;4644:15;;;;;:30;;:43;;4675:11;;4644:43;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4644:43:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4644:43:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4644:43:50;;;;;;;;;:49;4723:15;;:43;;;;;4644:49;;-1:-1:-1;4644:49:50;;4723:15;;;;;:30;;:43;;4754:11;;4723:43;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4723:43:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4723:43:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4723:43:50;;;;;;;;;:49;;-1:-1:-1;4785:34:50;;:::i;:::-;4823:6;;;;;;;;;;;:41;;;4878:14;4906:11;4931;4956:20;4823:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4823:163:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4823:163:50;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4823:163:50;;;;;;;;;4782:204;-1:-1:-1;5032:28:50;;-1:-1:-1;5032:13:50;5050:9;5032:28;:17;:28;:::i;:::-;5001;:13;5019:9;5001:28;:17;:28;:::i;:::-;:59;4997:691;;;5176:13;5148:41;;5224:144;5278:13;5309:9;5336:12;:18;;;5224:36;:144::i;:::-;5203:165;;5396:4;5382:18;;4997:691;;;5459:137;5506:13;5537:12;:18;;;5573:9;5459:29;:137::i;:::-;5431:165;;5631:13;5610:34;;5672:5;5658:19;;4997:691;4134:1560;;;;;;;;;;;;;:::o;7643:1803:34:-;8000:25;;:::i;:::-;8037:36;;:::i;:::-;8088:12;8083:788;;8228:213;;;;;;;;;8270:4;8228:213;;;;;-1:-1:-1;8228:213:34;;;;8356:26;8228:213;;;;;;;8214:227;-1:-1:-1;8083:788:34;;;8479:12;8472:20;;;;8639:221;;;;;;;;;-1:-1:-1;8639:221:34;;;;;;;;;;;8768:26;8639:221;;;;;;;8625:235;-1:-1:-1;8083:788:34;8888:551;;;;;;;;;;8933:24;8888:551;;;;8982:15;8888:551;;;;9019:11;8888:551;;;;9062:12;9061:13;:45;;9093:13;9061:45;;;9077:13;9061:45;8888:551;;;;9140:12;9139:13;:45;;9171:13;9139:45;;;9155:13;9139:45;8888:551;;;;9212:12;8888:551;;;;;;9254:16;8888:551;;;;9358:4;9391:13;9406:7;9380:34;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;9380:34:34;;;;9290:138;;;49:4:-1;9290:138:34;;;;;;;22:32:-1;26:21;;;22:32;6:49;;9290:138:34;;;8888:551;;8881:558;7643:1803;-1:-1:-1;;;;;;;;;;;7643:1803:34:o;1726:561:99:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;6359:968::-;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;7308:12:99;;;7318:1;7308:12;;;;;;;;;;;;7301:19;;;6359:968;;;;:::o;8252:958::-;8524:13;;;8534:2;8524:13;;;8346:12;8524:13;;;;;;8386:14;;;;8346:12;;8524:13;;;21:6:-1;;104:10;8524:13:99;87:34:-1;135:17;;-1:-1;8524:13:99;8502:35;;902:2;8601:23;;8589:6;8596:1;8589:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8646:27;;8634:6;8641:1;8634:9;;;;;;;;;;;:39;;;;;;;;;;;8787:9;8782:398;8802:2;8798:1;:6;8782:398;;;8891:1;8887:5;;8984:23;1232:3;8989:17;;8984:4;:23::i;:::-;8963:6;8975:5;8970:2;:10;8963:18;;;;;;;;;;;:44;;;;;;;;;;;9030:1;9025;:6;;9021:10;;9122:23;1232:3;9127:1;:17;9122:4;:23::i;:::-;9101:6;9113:5;9108:2;:10;9101:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9168:1:99;9163:6;;;;;8806:3;;8782:398;;2159:459:150;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:150;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;;2610:1;-1:-1:-1;2159:459:150;;;;;:::o;1516:409:92:-;1676:7;1703:11;;;:29;;-1:-1:-1;1718:14:92;;1703:29;1699:151;;;1811:28;1824:1;1827:11;1811:12;:28::i;:::-;1804:35;;;;1699:151;1866:52;1916:1;1866:45;1899:11;1866:28;1916:1;1866:21;:6;1877:9;1866:21;:10;:21;:::i;:::-;:25;:28;:25;:28;:::i;:::-;:32;:45;:32;:45;:::i;:::-;:49;:52;:49;:52;:::i;:::-;1859:59;;1516:409;;;;;;:::o;1132:228::-;1285:7;1315:38;1341:11;1315:21;:6;1326:9;1315:21;:10;:21;:::i;7333:913:99:-;7427:12;7459:10;7455:51;;-1:-1:-1;7485:10:99;;;;;;;;;;;;;;;;;;;7455:51;7567:5;7555:9;7606:69;7613:6;;7606:69;;7635:8;;7662:2;7657:7;;;;7606:69;;;7716:17;7746:6;7736:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7736:17:99;87:34:-1;135:17;;-1:-1;7736:17:99;-1:-1:-1;7845:5:99;;-1:-1:-1;7716:37:99;-1:-1:-1;7877:6:99;7860:358;7885:6;;7860:358;;8039:3;;8135:2;8131:1;:6;902:2;8117:21;8106:34;;8096:4;8101:1;8096:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8205:2:99;8200:7;;;;7860:358;;;-1:-1:-1;8235:4:99;7333:913;-1:-1:-1;;;;7333:913:99:o;10178:325::-;10267:4;10335:2;10327:5;:10;10323:79;;;-1:-1:-1;902:2:99;10371:18;;10360:31;;10353:38;;10323:79;-1:-1:-1;956:2:99;10467:27;10456:40;;;10178:325::o;3073:130:150:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;1274:134::-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;3718:338;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:150:o;1732:187::-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:150;;;1732:187::o;1843:3853:50:-;;;;;;;;;;-1:-1:-1;1843:3853:50;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1843:3853:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1843:3853:50;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:128;217:13;;235:30;217:13;235:30;;303:468;;415:4;403:9;398:3;394:19;390:30;387:2;;;433:1;430;423:12;387:2;451:20;466:4;451:20;;;442:29;-1:-1;522:1;554:49;599:3;579:9;554:49;;;529:75;;-1:-1;667:2;700:49;745:3;721:22;;;700:49;;;693:4;686:5;682:16;675:75;625:136;381:390;;;;;806:345;;930:4;918:9;913:3;909:19;905:30;902:2;;;948:1;945;938:12;902:2;966:20;981:4;966:20;;;957:29;-1:-1;1037:1;1069:60;1125:3;1105:9;1069:60;;;1044:86;;-1:-1;1055:5;896:255;-1:-1;;896:255;1181:495;;1303:4;1291:9;1286:3;1282:19;1278:30;1275:2;;;1321:1;1318;1311:12;1275:2;1339:20;1354:4;1339:20;;;1330:29;-1:-1;1409:1;1441:57;1494:3;1474:9;1441:57;;;1416:83;;-1:-1;1561:2;1594:60;1650:3;1626:22;;;1594:60;;1683:130;1750:20;;1775:33;1750:20;1775:33;;1820:134;1898:13;;1916:33;1898:13;1916:33;;1961:128;2027:20;;2052:32;2027:20;2052:32;;2096:132;2173:13;;2191:32;2173:13;2191:32;;2235:257;;2347:2;2335:9;2326:7;2322:23;2318:32;2315:2;;;2363:1;2360;2353:12;2315:2;2398:1;2415:61;2468:7;2448:9;2415:61;;;2405:71;2309:183;-1:-1;;;;2309:183;2499:835;;;;;;2716:3;2704:9;2695:7;2691:23;2687:33;2684:2;;;2733:1;2730;2723:12;2684:2;2768:1;2785:76;2853:7;2833:9;2785:76;;;2775:86;;2747:120;2898:2;2916:76;2984:7;2975:6;2964:9;2960:22;2916:76;;;2906:86;;2877:121;3029:3;3048:53;3093:7;3084:6;3073:9;3069:22;3048:53;;;3038:63;;3008:99;3138:3;3157:53;3202:7;3193:6;3182:9;3178:22;3157:53;;;3147:63;;3117:99;3247:3;3266:52;3310:7;3301:6;3290:9;3286:22;3266:52;;;3256:62;;3226:98;2678:656;;;;;;;;;3341:311;;3480:2;3468:9;3459:7;3455:23;3451:32;3448:2;;;3496:1;3493;3486:12;3448:2;3531:1;3548:88;3628:7;3608:9;3548:88;;3659:495;;;3839:2;3827:9;3818:7;3814:23;3810:32;3807:2;;;3855:1;3852;3845:12;3807:2;3890:1;3907:88;3987:7;3967:9;3907:88;;;3897:98;;3869:132;4032:2;4050:88;4130:7;4121:6;4110:9;4106:22;4050:88;;;4040:98;;4011:133;3801:353;;;;;;4161:307;;4298:2;4286:9;4277:7;4273:23;4269:32;4266:2;;;4314:1;4311;4304:12;4266:2;4349:1;4366:86;4444:7;4424:9;4366:86;;4475:261;;4589:2;4577:9;4568:7;4564:23;4560:32;4557:2;;;4605:1;4602;4595:12;4557:2;4640:1;4657:63;4712:7;4692:9;4657:63;;4744:257;;4895:100;4991:3;4983:6;4895:100;;5010:253;;5135:88;5219:3;5211:6;5135:88;;;-1:-1;;5252:4;5243:14;;5128:135;5271:142;5362:45;5401:5;5362:45;;;5357:3;5350:58;5344:69;;;5420:103;5493:24;5511:5;5493:24;;5717:1048;;5912:79;5985:5;5912:79;;;6004:111;6108:6;6103:3;6004:111;;;5997:118;;6138:3;6180:4;6172:6;6168:17;6163:3;6159:27;6207:81;6282:5;6207:81;;;6308:7;6336:1;6321:405;6346:6;6343:1;6340:13;6321:405;;;6408:9;6402:4;6398:20;6393:3;6386:33;6453:6;6447:13;6475:114;6584:4;6569:13;6475:114;;;6467:122;;6606:85;6684:6;6606:85;;;6714:4;6705:14;;;;;6596:95;-1:-1;;6368:1;6361:9;6321:405;;;-1:-1;6739:4;;5891:874;-1:-1;;;;;;;5891:874;6828:842;;7011:73;7078:5;7011:73;;;7097:105;7195:6;7190:3;7097:105;;;7090:112;;7223:75;7292:5;7223:75;;;7318:7;7346:1;7331:317;7356:6;7353:1;7350:13;7331:317;;;7423:6;7417:13;7444:101;7541:3;7526:13;7444:101;;;7437:108;;7562:79;7634:6;7562:79;;;7552:89;-1:-1;;7378:1;7371:9;7331:317;;;-1:-1;7661:3;;6990:680;-1:-1;;;;;6990:680;7678:94;7745:21;7760:5;7745:21;;7890:148;7989:43;8008:23;8025:5;8008:23;;;7989:43;;8045:148;8144:43;8163:23;8180:5;8163:23;;8200:152;8301:45;8321:24;8339:5;8321:24;;8359:343;;8469:38;8501:5;8469:38;;;8519:70;8582:6;8577:3;8519:70;;;8512:77;;8594:52;8639:6;8634:3;8627:4;8620:5;8616:16;8594:52;;;8667:29;8689:6;8667:29;;;8658:39;;;;8449:253;-1:-1;;;8449:253;8709:356;;8837:38;8869:5;8837:38;;;8887:88;8968:6;8963:3;8887:88;;;8880:95;;8980:52;9025:6;9020:3;9013:4;9006:5;9002:16;8980:52;;;9044:16;;;;;8817:248;-1:-1;;8817:248;9394:176;9502:62;9558:5;9502:62;;9941:144;10028:51;10073:5;10028:51;;10092:158;10186:58;10238:5;10186:58;;10771:327;;10931:67;10995:2;10990:3;10931:67;;;11031:29;11011:50;;11089:2;11080:12;;10917:181;-1:-1;;10917:181;11107:370;;11267:67;11331:2;11326:3;11267:67;;;11367:34;11347:55;;11436:3;11431:2;11422:12;;11415:25;11468:2;11459:12;;11253:224;-1:-1;;11253:224;11486:331;;11646:67;11710:2;11705:3;11646:67;;;11746:33;11726:54;;11808:2;11799:12;;11632:185;-1:-1;;11632:185;11886:1616;12105:23;;11886:1616;;12031:6;12022:16;;;12134:77;12026:3;12105:23;12134:77;;;12053:164;12295:4;12288:5;12284:16;12278:23;12307:63;12364:4;12359:3;12355:14;12341:12;12307:63;;;12227:149;12451:4;12444:5;12440:16;12434:23;12463:119;12576:4;12571:3;12567:14;12553:12;12463:119;;;12386:202;12672:4;12665:5;12661:16;12655:23;12684:63;12741:4;12736:3;12732:14;12718:12;12684:63;;;12598:155;12839:4;12832:5;12828:16;12822:23;12851:63;12908:4;12903:3;12899:14;12885:12;12851:63;;;12763:157;13001:4;12994:5;12990:16;12984:23;13013:65;13070:6;13065:3;13061:16;13047:12;13013:65;;;12930:154;13167:4;13160:5;13156:16;13150:23;13179:65;13236:6;13231:3;13227:16;13213:12;13179:65;;;13094:156;13323:4;13316:5;13312:16;13306:23;13377:3;13371:4;13367:14;13358:6;13353:3;13349:16;13342:40;13397:67;13459:4;13445:12;13397:67;;;13389:75;12004:1498;-1:-1;;;;;12004:1498;13568:821;13773:23;;13707:4;13698:14;;;13802:57;13702:3;13773:23;13802:57;;;13727:138;13946:4;13939:5;13935:16;13929:23;13958:84;14036:4;14031:3;14027:14;14013:12;13958:84;;;13875:173;14120:4;14113:5;14109:16;14103:23;14132:81;14207:4;14202:3;14198:14;14184:12;14132:81;;;14058:161;14293:4;14286:5;14282:16;14276:23;14305:63;14362:4;14357:3;14353:14;14339:12;14305:63;;14445:475;14651:23;;14584:4;14575:14;;;14680:63;14579:3;14651:23;14680:63;;;14604:145;14824:4;14817:5;14813:16;14807:23;14836:63;14893:4;14888:3;14884:14;14870:12;15444:103;15517:24;15535:5;15517:24;;15674:110;15755:23;15772:5;15755:23;;15791:244;;15910:75;15981:3;15972:6;15910:75;;;-1:-1;16007:2;15998:12;;15898:137;-1:-1;15898:137;16042:553;;16258:93;16347:3;16338:6;16258:93;;;16251:100;;16362:73;16431:3;16422:6;16362:73;;;16457:1;16452:3;16448:11;16441:18;;16477:93;16566:3;16557:6;16477:93;;16602:978;;16916:93;17005:3;16996:6;16916:93;;;16909:100;;17020:73;17089:3;17080:6;17020:73;;;17115:1;17110:3;17106:11;17099:18;;17135:93;17224:3;17215:6;17135:93;;;17128:100;;17239:73;17308:3;17299:6;17239:73;;;17334:1;17329:3;17325:11;17318:18;;17354:93;17443:3;17434:6;17354:93;;;17347:100;;17458:73;17527:3;17518:6;17458:73;;;-1:-1;17553:1;17544:11;;16897:683;-1:-1;;;;;;16897:683;17587:340;17741:2;17726:18;;17755:71;17730:9;17799:6;17755:71;;;17837:80;17913:2;17902:9;17898:18;17889:6;17837:80;;17934:796;18268:2;18282:47;;;18253:18;;18343:146;18253:18;18475:6;18343:146;;;18335:154;;18537:9;18531:4;18527:20;18522:2;18511:9;18507:18;18500:48;18562:158;18715:4;18706:6;18562:158;;18737:396;18895:2;18880:18;;18909:65;18884:9;18947:6;18909:65;;;19022:9;19016:4;19012:20;19007:2;18996:9;18992:18;18985:48;19047:76;19118:4;19109:6;19047:76;;19140:263;19283:2;19268:18;;19297:96;19272:9;19366:6;19297:96;;19948:301;20086:2;20100:47;;;20071:18;;20161:78;20071:18;20225:6;20161:78;;20256:407;20447:2;20461:47;;;20432:18;;20522:131;20432:18;20522:131;;20670:407;20861:2;20875:47;;;20846:18;;20936:131;20846:18;20936:131;;21084:407;21275:2;21289:47;;;21260:18;;21350:131;21260:18;21350:131;;21498:416;21690:2;21675:18;;21704:117;21679:9;21794:6;21704:117;;;21832:72;21900:2;21889:9;21885:18;21876:6;21832:72;;21921:636;22167:3;22152:19;;22182:117;22156:9;22272:6;22182:117;;;22310:72;22378:2;22367:9;22363:18;22354:6;22310:72;;;22393;22461:2;22450:9;22446:18;22437:6;22393:72;;;22476:71;22542:3;22531:9;22527:19;22518:6;22476:71;;22564:213;22682:2;22667:18;;22696:71;22671:9;22740:6;22696:71;;22784:324;22930:2;22915:18;;22944:71;22919:9;22988:6;22944:71;;;23026:72;23094:2;23083:9;23079:18;23070:6;23026:72;;23115:320;23259:2;23244:18;;23273:71;23248:9;23317:6;23273:71;;;23355:70;23421:2;23410:9;23406:18;23397:6;23355:70;;23442:256;23504:2;23498:9;23530:17;;;23605:18;23590:34;;23626:22;;;23587:62;23584:2;;;23662:1;23659;23652:12;23584:2;23678;23671:22;23482:216;;-1:-1;23482:216;23705:176;23854:4;23845:14;;23802:79;24065:162;24193:12;;24164:63;25053:203;25196:19;;;25245:4;25236:14;;25189:67;26127:91;;26189:24;26207:5;26189:24;;26225:85;26291:13;26284:21;;26267:43;26317:144;26389:66;26378:78;;26361:100;26468:144;26540:66;26529:78;;26512:100;26619:72;26681:5;26664:27;26698:138;26776:5;26782:49;26776:5;26782:49;;26843:152;26928:5;26934:56;26928:5;26934:56;;27155:121;27228:42;27217:54;;27200:76;27362:88;27434:10;27423:22;;27406:44;27457:129;;27544:37;27575:5;27593:171;;27697:62;27753:5;27697:62;;28544:138;;28637:40;28671:5;28637:40;;28689:152;;28789:47;28830:5;28789:47;;29245:268;29310:1;29317:101;29331:6;29328:1;29325:13;29317:101;;;29398:11;;;29392:18;29379:11;;;29372:39;29353:2;29346:10;29317:101;;;29433:6;29430:1;29427:13;29424:2;;;-1:-1;;29498:1;29480:16;;29473:27;29294:219;29762:97;29850:2;29830:14;29846:7;29826:28;;29810:49;29867:107;29952:1;29945:5;29942:12;29932:2;;29958:9;29981:114;30073:1;30066:5;30063:12;30053:2;;30079:9;30220:117;30289:24;30307:5;30289:24;;;30282:5;30279:35;30269:2;;30328:1;30325;30318:12;30344:111;30410:21;30425:5;30410:21;;30462:117;30531:24;30549:5;30531:24;;30586:115;30654:23;30671:5;30654:23;",
  "source": "/*\n\n    Copyright 2019 dYdX Trading Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { ReentrancyGuard } from \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\nimport { Account } from \"../../protocol/lib/Account.sol\";\nimport { Actions } from \"../../protocol/lib/Actions.sol\";\nimport { Decimal } from \"../../protocol/lib/Decimal.sol\";\nimport { Interest } from \"../../protocol/lib/Interest.sol\";\nimport { DolomiteMarginMath } from \"../../protocol/lib/DolomiteMarginMath.sol\";\nimport { Monetary } from \"../../protocol/lib/Monetary.sol\";\nimport { Require } from \"../../protocol/lib/Require.sol\";\nimport { Types } from \"../../protocol/lib/Types.sol\";\n\nimport { IExpiry } from \"../interfaces/IExpiry.sol\";\n\nimport { HasLiquidatorRegistry } from \"../helpers/HasLiquidatorRegistry.sol\";\nimport { LiquidatorProxyBase } from \"../helpers/LiquidatorProxyBase.sol\";\nimport { OnlyDolomiteMargin } from \"../helpers/OnlyDolomiteMargin.sol\";\n\nimport { AccountActionLib } from \"../lib/AccountActionLib.sol\";\n\n\n/**\n * @title ExpiryProxy\n * @author Dolomite\n *\n * Contract for expiring other accounts in DolomiteMargin.\n */\ncontract ExpiryProxy is HasLiquidatorRegistry, OnlyDolomiteMargin, ReentrancyGuard {\n    using SafeMath for uint256;\n\n    // ============ Constants =============\n\n    bytes32 private FILE = \"ExpiryProxy\";\n\n    // ============== Storage ==============\n\n    IExpiry public EXPIRY;\n\n    // ============ Constructor ============\n\n    constructor (\n        address _liquidatorAssetRegistry,\n        address _expiry,\n        address _dolomiteMargin\n    )\n    public\n    HasLiquidatorRegistry(_liquidatorAssetRegistry)\n    OnlyDolomiteMargin(_dolomiteMargin)\n    {\n        EXPIRY = IExpiry(_expiry);\n    }\n\n    function expire(\n        Account.Info memory _solidAccount,\n        Account.Info memory _liquidAccount,\n        uint256 _owedMarket,\n        uint256 _heldMarket,\n        uint32 _expirationTimestamp\n    )\n        public\n        requireIsAssetWhitelistedForLiquidation(_owedMarket)\n        requireIsAssetWhitelistedForLiquidation(_heldMarket)\n        nonReentrant\n    {\n        Require.that(\n            _solidAccount.owner == msg.sender || DOLOMITE_MARGIN.getIsLocalOperator(_solidAccount.owner, msg.sender),\n            FILE,\n            \"Sender not operator\",\n            msg.sender\n        );\n        Require.that(\n            _expirationTimestamp == EXPIRY.getExpiry(_liquidAccount, _owedMarket),\n            FILE,\n            \"Invalid expiration timestamp\"\n        );\n\n        // Expire the account\n        Account.Info[] memory accounts = new Account.Info[](2);\n        accounts[0] = _solidAccount;\n        accounts[1] = _liquidAccount;\n\n        Actions.ActionArgs[] memory actions = new Actions.ActionArgs[](1);\n        (uint256 solidHeldUpdateWithReward, uint256 owedWeiToLiquidate, bool flipMarkets) = _getAmountsForExpiration(\n            _liquidAccount,\n            _owedMarket,\n            _heldMarket,\n            _expirationTimestamp\n        );\n        actions[0] = AccountActionLib.encodeExpiryLiquidateAction(\n            /* _solidAccountId = */ 0,\n            /* _liquidAccountId = */ 1,\n            _owedMarket,\n            _heldMarket,\n            address(EXPIRY),\n            _expirationTimestamp,\n            solidHeldUpdateWithReward,\n            owedWeiToLiquidate,\n            flipMarkets\n        );\n\n        DOLOMITE_MARGIN.operate(accounts, actions);\n    }\n\n    function _getAmountsForExpiration(\n        Account.Info memory _liquidAccount,\n        uint256 _owedMarket,\n        uint256 _heldMarket,\n        uint32 _expirationTimestamp\n    ) internal view returns (uint256 solidHeldUpdateWithReward, uint256 owedWeiToLiquidate, bool flipMarkets) {\n        uint256 liquidHeldWei = DOLOMITE_MARGIN.getAccountWei(_liquidAccount, _heldMarket).value;\n        uint256 liquidOwedWei = DOLOMITE_MARGIN.getAccountWei(_liquidAccount, _owedMarket).value;\n\n        uint256 heldPrice = DOLOMITE_MARGIN.getMarketPrice(_heldMarket).value;\n        uint256 owedPrice = DOLOMITE_MARGIN.getMarketPrice(_owedMarket).value;\n        (, Monetary.Price memory owedPriceAdj) = EXPIRY.getLiquidationSpreadAdjustedPrices(\n            _liquidAccount,\n            _heldMarket,\n            _owedMarket,\n            _expirationTimestamp\n        );\n\n        if (liquidHeldWei.mul(heldPrice) < liquidOwedWei.mul(owedPrice)) {\n            // The held collateral is worth less than the adjusted debt\n            solidHeldUpdateWithReward = liquidHeldWei;\n            owedWeiToLiquidate = DolomiteMarginMath.getPartialRoundUp(\n                liquidHeldWei,\n                heldPrice,\n                owedPriceAdj.value\n            );\n            flipMarkets = true;\n        } else {\n            solidHeldUpdateWithReward = DolomiteMarginMath.getPartial(\n                liquidOwedWei,\n                owedPriceAdj.value,\n                heldPrice\n            );\n            owedWeiToLiquidate = liquidOwedWei;\n            flipMarkets = false;\n        }\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/ExpiryProxy.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/ExpiryProxy.sol",
    "exportedSymbols": {
      "ExpiryProxy": [
        10370
      ]
    },
    "id": 10371,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10057,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:50"
      },
      {
        "id": 10058,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:50"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 10060,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 37366,
        "src": "662:69:50",
        "symbolAliases": [
          {
            "foreign": 10059,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "id": 10062,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 38093,
        "src": "732:84:50",
        "symbolAliases": [
          {
            "foreign": 10061,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 10064,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 24694,
        "src": "818:80:50",
        "symbolAliases": [
          {
            "foreign": 10063,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../../protocol/lib/Account.sol",
        "id": 10066,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 24886,
        "src": "899:57:50",
        "symbolAliases": [
          {
            "foreign": 10065,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../../protocol/lib/Actions.sol",
        "id": 10068,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 25370,
        "src": "957:57:50",
        "symbolAliases": [
          {
            "foreign": 10067,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../../protocol/lib/Decimal.sol",
        "id": 10070,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 26024,
        "src": "1015:57:50",
        "symbolAliases": [
          {
            "foreign": 10069,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../../protocol/lib/Interest.sol",
        "id": 10072,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 27751,
        "src": "1073:59:50",
        "symbolAliases": [
          {
            "foreign": 10071,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol",
        "file": "../../protocol/lib/DolomiteMarginMath.sol",
        "id": 10074,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 26239,
        "src": "1133:79:50",
        "symbolAliases": [
          {
            "foreign": 10073,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../../protocol/lib/Monetary.sol",
        "id": 10076,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 27761,
        "src": "1213:59:50",
        "symbolAliases": [
          {
            "foreign": 10075,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 10078,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 28453,
        "src": "1273:57:50",
        "symbolAliases": [
          {
            "foreign": 10077,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../../protocol/lib/Types.sol",
        "id": 10080,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 31362,
        "src": "1331:53:50",
        "symbolAliases": [
          {
            "foreign": 10079,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol",
        "file": "../interfaces/IExpiry.sol",
        "id": 10082,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 4566,
        "src": "1386:52:50",
        "symbolAliases": [
          {
            "foreign": 10081,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/HasLiquidatorRegistry.sol",
        "file": "../helpers/HasLiquidatorRegistry.sol",
        "id": 10084,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 1723,
        "src": "1440:77:50",
        "symbolAliases": [
          {
            "foreign": 10083,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/LiquidatorProxyBase.sol",
        "file": "../helpers/LiquidatorProxyBase.sol",
        "id": 10086,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 2986,
        "src": "1518:73:50",
        "symbolAliases": [
          {
            "foreign": 10085,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
        "file": "../helpers/OnlyDolomiteMargin.sol",
        "id": 10088,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 3067,
        "src": "1592:71:50",
        "symbolAliases": [
          {
            "foreign": 10087,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol",
        "file": "../lib/AccountActionLib.sol",
        "id": 10090,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 5820,
        "src": "1665:63:50",
        "symbolAliases": [
          {
            "foreign": 10089,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10091,
              "name": "HasLiquidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1722,
              "src": "1867:21:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_HasLiquidatorRegistry_$1722",
                "typeString": "contract HasLiquidatorRegistry"
              }
            },
            "id": 10092,
            "nodeType": "InheritanceSpecifier",
            "src": "1867:21:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10093,
              "name": "OnlyDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3066,
              "src": "1890:18:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OnlyDolomiteMargin_$3066",
                "typeString": "contract OnlyDolomiteMargin"
              }
            },
            "id": 10094,
            "nodeType": "InheritanceSpecifier",
            "src": "1890:18:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10095,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38092,
              "src": "1910:15:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$38092",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 10096,
            "nodeType": "InheritanceSpecifier",
            "src": "1910:15:50"
          }
        ],
        "contractDependencies": [
          1722,
          3066,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title ExpiryProxy\n@author Dolomite\n * Contract for expiring other accounts in DolomiteMargin.",
        "fullyImplemented": true,
        "id": 10370,
        "linearizedBaseContracts": [
          10370,
          38092,
          3066,
          1722
        ],
        "name": "ExpiryProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 10099,
            "libraryName": {
              "contractScope": null,
              "id": 10097,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37365,
              "src": "1938:8:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37365",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1932:27:50",
            "typeName": {
              "id": 10098,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1951:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 10102,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 10370,
            "src": "2010:36:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 10100,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2010:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45787069727950726f7879",
              "id": 10101,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2033:13:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b75de6e2c8bb3cff77863ff373d246e68db6eff9f87a6c37d5d4a9816e3c1aa5",
                "typeString": "literal_string \"ExpiryProxy\""
              },
              "value": "ExpiryProxy"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 10104,
            "name": "EXPIRY",
            "nodeType": "VariableDeclaration",
            "scope": 10370,
            "src": "2099:21:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IExpiry_$4565",
              "typeString": "contract IExpiry"
            },
            "typeName": {
              "contractScope": null,
              "id": 10103,
              "name": "IExpiry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4565,
              "src": "2099:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IExpiry_$4565",
                "typeString": "contract IExpiry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10125,
              "nodeType": "Block",
              "src": "2399:42:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10119,
                      "name": "EXPIRY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10104,
                      "src": "2409:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IExpiry_$4565",
                        "typeString": "contract IExpiry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10121,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10108,
                          "src": "2426:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 10120,
                        "name": "IExpiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4565,
                        "src": "2418:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IExpiry_$4565_$",
                          "typeString": "type(contract IExpiry)"
                        }
                      },
                      "id": 10122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2418:16:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IExpiry_$4565",
                        "typeString": "contract IExpiry"
                      }
                    },
                    "src": "2409:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IExpiry_$4565",
                      "typeString": "contract IExpiry"
                    }
                  },
                  "id": 10124,
                  "nodeType": "ExpressionStatement",
                  "src": "2409:25:50"
                }
              ]
            },
            "documentation": null,
            "id": 10126,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10113,
                    "name": "_liquidatorAssetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10106,
                    "src": "2329:24:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 10114,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10112,
                  "name": "HasLiquidatorRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1722,
                  "src": "2307:21:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_HasLiquidatorRegistry_$1722_$",
                    "typeString": "type(contract HasLiquidatorRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2307:47:50"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10116,
                    "name": "_dolomiteMargin",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10110,
                    "src": "2378:15:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 10117,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10115,
                  "name": "OnlyDolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3066,
                  "src": "2359:18:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_OnlyDolomiteMargin_$3066_$",
                    "typeString": "type(contract OnlyDolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2359:35:50"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10106,
                  "name": "_liquidatorAssetRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2195:32:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10105,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2195:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10108,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2237:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2237:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10110,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2262:23:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2262:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2185:106:50"
            },
            "returnParameters": {
              "id": 10118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2399:0:50"
            },
            "scope": 10370,
            "src": "2173:268:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10256,
              "nodeType": "Block",
              "src": "2813:1315:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10150,
                              "name": "_solidAccount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10128,
                              "src": "2849:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 10151,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "2849:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10152,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "2872:3:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2872:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "2849:33:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10157,
                                "name": "_solidAccount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10128,
                                "src": "2921:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 10158,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "2921:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10159,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38107,
                                "src": "2942:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2942:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10155,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "2886:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            },
                            "id": 10156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getIsLocalOperator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24489,
                            "src": "2886:34:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view external returns (bool)"
                            }
                          },
                          "id": 10161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2886:67:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2849:104:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10163,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10102,
                        "src": "2967:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53656e646572206e6f74206f70657261746f72",
                        "id": 10164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2985:21:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a4e0490ac0f28a200bf9eac5ba2e1a54617eacf228037541fe6d7aea2d8ff499",
                          "typeString": "literal_string \"Sender not operator\""
                        },
                        "value": "Sender not operator"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10165,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3020:3:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3020:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a4e0490ac0f28a200bf9eac5ba2e1a54617eacf228037541fe6d7aea2d8ff499",
                          "typeString": "literal_string \"Sender not operator\""
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10147,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2823:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 10149,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "2823:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 10167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2823:217:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10168,
                  "nodeType": "ExpressionStatement",
                  "src": "2823:217:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 10178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10172,
                          "name": "_expirationTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10136,
                          "src": "3076:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10175,
                              "name": "_liquidAccount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10130,
                              "src": "3117:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10176,
                              "name": "_owedMarket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10132,
                              "src": "3133:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10173,
                              "name": "EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10104,
                              "src": "3100:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            },
                            "id": 10174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getExpiry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4564,
                            "src": "3100:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                              "typeString": "function (struct Account.Info memory,uint256) view external returns (uint32)"
                            }
                          },
                          "id": 10177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3100:45:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "3076:69:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10179,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10102,
                        "src": "3159:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642065787069726174696f6e2074696d657374616d70",
                        "id": 10180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3177:30:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d950ed7e9d9f3397a339c43fed457299bd855f5f038ba61ac327db005adc80e",
                          "typeString": "literal_string \"Invalid expiration timestamp\""
                        },
                        "value": "Invalid expiration timestamp"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d950ed7e9d9f3397a339c43fed457299bd855f5f038ba61ac327db005adc80e",
                          "typeString": "literal_string \"Invalid expiration timestamp\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10169,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "3050:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 10171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "3050:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 10181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3050:167:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10182,
                  "nodeType": "ExpressionStatement",
                  "src": "3050:167:50"
                },
                {
                  "assignments": [
                    10187
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10187,
                      "name": "accounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3258:30:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                        "typeString": "struct Account.Info[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10185,
                          "name": "Account.Info",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24851,
                          "src": "3258:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                            "typeString": "struct Account.Info"
                          }
                        },
                        "id": 10186,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3258:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_storage_$dyn_storage_ptr",
                          "typeString": "struct Account.Info[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10193,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 10191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3310:1:50",
                        "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"
                        }
                      ],
                      "id": 10190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3291:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Info_$24851_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Account.Info memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10188,
                          "name": "Account.Info",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24851,
                          "src": "3295:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                            "typeString": "struct Account.Info"
                          }
                        },
                        "id": 10189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3295:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_storage_$dyn_storage_ptr",
                          "typeString": "struct Account.Info[]"
                        }
                      }
                    },
                    "id": 10192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3291:21:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory",
                      "typeString": "struct Account.Info memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3258:54:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10194,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "3322:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      "id": 10196,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3331:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3322:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10197,
                      "name": "_solidAccount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10128,
                      "src": "3336:13:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "src": "3322:27:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                      "typeString": "struct Account.Info memory"
                    }
                  },
                  "id": 10199,
                  "nodeType": "ExpressionStatement",
                  "src": "3322:27:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10200,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "3359:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      "id": 10202,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3368:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3359:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10203,
                      "name": "_liquidAccount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10130,
                      "src": "3373:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "src": "3359:28:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                      "typeString": "struct Account.Info memory"
                    }
                  },
                  "id": 10205,
                  "nodeType": "ExpressionStatement",
                  "src": "3359:28:50"
                },
                {
                  "assignments": [
                    10210
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10210,
                      "name": "actions",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3398:35:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                        "typeString": "struct Actions.ActionArgs[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10208,
                          "name": "Actions.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24930,
                          "src": "3398:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$24930_storage_ptr",
                            "typeString": "struct Actions.ActionArgs"
                          }
                        },
                        "id": 10209,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3398:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_storage_$dyn_storage_ptr",
                          "typeString": "struct Actions.ActionArgs[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10216,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3461:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 10213,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3436:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Actions.ActionArgs memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10211,
                          "name": "Actions.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24930,
                          "src": "3440:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$24930_storage_ptr",
                            "typeString": "struct Actions.ActionArgs"
                          }
                        },
                        "id": 10212,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3440:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_storage_$dyn_storage_ptr",
                          "typeString": "struct Actions.ActionArgs[]"
                        }
                      }
                    },
                    "id": 10215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3436:27:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory",
                      "typeString": "struct Actions.ActionArgs memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3398:65:50"
                },
                {
                  "assignments": [
                    10218,
                    10220,
                    10222
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10218,
                      "name": "solidHeldUpdateWithReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3474:33:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10217,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3474:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10220,
                      "name": "owedWeiToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3509:26:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10219,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3509:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10222,
                      "name": "flipMarkets",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3537:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10221,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3537:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10229,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10224,
                        "name": "_liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10130,
                        "src": "3595:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10225,
                        "name": "_owedMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10132,
                        "src": "3623:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10226,
                        "name": "_heldMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10134,
                        "src": "3648:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10227,
                        "name": "_expirationTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10136,
                        "src": "3673:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 10223,
                      "name": "_getAmountsForExpiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10369,
                      "src": "3557:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$_t_bool_$",
                        "typeString": "function (struct Account.Info memory,uint256,uint256,uint32) view returns (uint256,uint256,bool)"
                      }
                    },
                    "id": 10228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3557:146:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(uint256,uint256,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3473:230:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10230,
                        "name": "actions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10210,
                        "src": "3713:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      },
                      "id": 10232,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3721:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3713:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$24930_memory",
                        "typeString": "struct Actions.ActionArgs memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3808:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3848:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "argumentTypes": null,
                          "id": 10237,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10132,
                          "src": "3863:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10238,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10134,
                          "src": "3888:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10240,
                              "name": "EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10104,
                              "src": "3921:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            ],
                            "id": 10239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3913:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 10241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3913:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10242,
                          "name": "_expirationTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10136,
                          "src": "3942:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10243,
                          "name": "solidHeldUpdateWithReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10218,
                          "src": "3976:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10244,
                          "name": "owedWeiToLiquidate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10220,
                          "src": "4015:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10245,
                          "name": "flipMarkets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10222,
                          "src": "4047:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10233,
                          "name": "AccountActionLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5819,
                          "src": "3726:16:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                            "typeString": "type(library AccountActionLib)"
                          }
                        },
                        "id": 10234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "encodeExpiryLiquidateAction",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5505,
                        "src": "3726:44:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint32_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_struct$_ActionArgs_$24930_memory_ptr_$",
                          "typeString": "function (uint256,uint256,uint256,uint256,address,uint32,uint256,uint256,bool) pure returns (struct Actions.ActionArgs memory)"
                        }
                      },
                      "id": 10246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3726:342:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$24930_memory_ptr",
                        "typeString": "struct Actions.ActionArgs memory"
                      }
                    },
                    "src": "3713:355:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$24930_memory",
                      "typeString": "struct Actions.ActionArgs memory"
                    }
                  },
                  "id": 10248,
                  "nodeType": "ExpressionStatement",
                  "src": "3713:355:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10252,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "4103:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10253,
                        "name": "actions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10210,
                        "src": "4113:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10249,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4079:15:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      "id": 10251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "operate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24512,
                      "src": "4079:23:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr_$_t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (struct Account.Info memory[] memory,struct Actions.ActionArgs memory[] memory) external"
                      }
                    },
                    "id": 10254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4079:42:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10255,
                  "nodeType": "ExpressionStatement",
                  "src": "4079:42:50"
                }
              ]
            },
            "documentation": null,
            "id": 10257,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10139,
                    "name": "_owedMarket",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10132,
                    "src": "2714:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 10140,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10138,
                  "name": "requireIsAssetWhitelistedForLiquidation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1631,
                  "src": "2674:39:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2674:52:50"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10142,
                    "name": "_heldMarket",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10134,
                    "src": "2775:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 10143,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10141,
                  "name": "requireIsAssetWhitelistedForLiquidation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1631,
                  "src": "2735:39:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2735:52:50"
              },
              {
                "arguments": null,
                "id": 10145,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10144,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "2796:12:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2796:12:50"
              }
            ],
            "name": "expire",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10128,
                  "name": "_solidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2472:33:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10127,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2472:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10130,
                  "name": "_liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2515:34:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10129,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2515:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10132,
                  "name": "_owedMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2559:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2559:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10134,
                  "name": "_heldMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2588:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2588:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10136,
                  "name": "_expirationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2617:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10135,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2462:188:50"
            },
            "returnParameters": {
              "id": 10146,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2813:0:50"
            },
            "scope": 10370,
            "src": "2447:1681:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10368,
              "nodeType": "Block",
              "src": "4417:1277:50",
              "statements": [
                {
                  "assignments": [
                    10275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10275,
                      "name": "liquidHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4427:21:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4427:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10282,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10278,
                          "name": "_liquidAccount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10259,
                          "src": "4481:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10279,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10263,
                          "src": "4497:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10276,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4451:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getAccountWei",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24407,
                        "src": "4451:29:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Account.Info memory,uint256) view external returns (struct Types.Wei memory)"
                        }
                      },
                      "id": 10280,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4451:58:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei memory"
                      }
                    },
                    "id": 10281,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 31148,
                    "src": "4451:64:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4427:88:50"
                },
                {
                  "assignments": [
                    10284
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10284,
                      "name": "liquidOwedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4525:21:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10283,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4525:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10291,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10287,
                          "name": "_liquidAccount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10259,
                          "src": "4579:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10288,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10261,
                          "src": "4595:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10285,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4549:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getAccountWei",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24407,
                        "src": "4549:29:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Account.Info memory,uint256) view external returns (struct Types.Wei memory)"
                        }
                      },
                      "id": 10289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4549:58:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei memory"
                      }
                    },
                    "id": 10290,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 31148,
                    "src": "4549:64:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4525:88:50"
                },
                {
                  "assignments": [
                    10293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10293,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4624:17:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10292,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4624:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10299,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10296,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10263,
                          "src": "4675:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10294,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4644:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24243,
                        "src": "4644:30:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$",
                          "typeString": "function (uint256) view external returns (struct Monetary.Price memory)"
                        }
                      },
                      "id": 10297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4644:43:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 10298,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "4644:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4624:69:50"
                },
                {
                  "assignments": [
                    10301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10301,
                      "name": "owedPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4703:17:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10300,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4703:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10307,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10304,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10261,
                          "src": "4754:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10302,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4723:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24243,
                        "src": "4723:30:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$",
                          "typeString": "function (uint256) view external returns (struct Monetary.Price memory)"
                        }
                      },
                      "id": 10305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4723:43:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 10306,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "4723:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4703:69:50"
                },
                {
                  "assignments": [
                    null,
                    10311
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 10311,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4785:34:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10310,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "4785:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10319,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10314,
                        "name": "_liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10259,
                        "src": "4878:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10315,
                        "name": "_heldMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10263,
                        "src": "4906:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10316,
                        "name": "_owedMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10261,
                        "src": "4931:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10317,
                        "name": "_expirationTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10265,
                        "src": "4956:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10312,
                        "name": "EXPIRY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10104,
                        "src": "4823:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IExpiry_$4565",
                          "typeString": "contract IExpiry"
                        }
                      },
                      "id": 10313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidationSpreadAdjustedPrices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4542,
                      "src": "4823:41:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Account.Info memory,uint256,uint256,uint32) view external returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 10318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4823:163:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4782:204:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10322,
                          "name": "heldPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10293,
                          "src": "5019:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10320,
                          "name": "liquidHeldWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10275,
                          "src": "5001:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 37282,
                        "src": "5001:17:50",
                        "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": 10323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5001:28:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10326,
                          "name": "owedPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10301,
                          "src": "5050:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10324,
                          "name": "liquidOwedWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10284,
                          "src": "5032:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 37282,
                        "src": "5032:17:50",
                        "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": 10327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5032:28:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5001:59:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10366,
                    "nodeType": "Block",
                    "src": "5417:271:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10348,
                            "name": "solidHeldUpdateWithReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10268,
                            "src": "5431:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10351,
                                "name": "liquidOwedWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10284,
                                "src": "5506:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10352,
                                  "name": "owedPriceAdj",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10311,
                                  "src": "5537:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                    "typeString": "struct Monetary.Price memory"
                                  }
                                },
                                "id": 10353,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27755,
                                "src": "5537:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10354,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10293,
                                "src": "5573:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10349,
                                "name": "DolomiteMarginMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26238,
                                "src": "5459:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                                  "typeString": "type(library DolomiteMarginMath)"
                                }
                              },
                              "id": 10350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPartial",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26056,
                              "src": "5459:29:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5459:137:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5431:165:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10357,
                        "nodeType": "ExpressionStatement",
                        "src": "5431:165:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10358,
                            "name": "owedWeiToLiquidate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10270,
                            "src": "5610:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10359,
                            "name": "liquidOwedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10284,
                            "src": "5631:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5610:34:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10361,
                        "nodeType": "ExpressionStatement",
                        "src": "5610:34:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10362,
                            "name": "flipMarkets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10272,
                            "src": "5658:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 10363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5672:5:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "5658:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10365,
                        "nodeType": "ExpressionStatement",
                        "src": "5658:19:50"
                      }
                    ]
                  },
                  "id": 10367,
                  "nodeType": "IfStatement",
                  "src": "4997:691:50",
                  "trueBody": {
                    "id": 10347,
                    "nodeType": "Block",
                    "src": "5062:349:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10329,
                            "name": "solidHeldUpdateWithReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10268,
                            "src": "5148:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10330,
                            "name": "liquidHeldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10275,
                            "src": "5176:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5148:41:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10332,
                        "nodeType": "ExpressionStatement",
                        "src": "5148:41:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10333,
                            "name": "owedWeiToLiquidate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10270,
                            "src": "5203:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10336,
                                "name": "liquidHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10275,
                                "src": "5278:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10337,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10293,
                                "src": "5309:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10338,
                                  "name": "owedPriceAdj",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10311,
                                  "src": "5336:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                    "typeString": "struct Monetary.Price memory"
                                  }
                                },
                                "id": 10339,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27755,
                                "src": "5336:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10334,
                                "name": "DolomiteMarginMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26238,
                                "src": "5224:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                                  "typeString": "type(library DolomiteMarginMath)"
                                }
                              },
                              "id": 10335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPartialRoundUp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26097,
                              "src": "5224:36:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5224:144:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5203:165:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10342,
                        "nodeType": "ExpressionStatement",
                        "src": "5203:165:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10343,
                            "name": "flipMarkets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10272,
                            "src": "5382:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 10344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5396:4:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5382:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10346,
                        "nodeType": "ExpressionStatement",
                        "src": "5382:18:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getAmountsForExpiration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10259,
                  "name": "_liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4177:34:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10258,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "4177:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10261,
                  "name": "_owedMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4221:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4221:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10263,
                  "name": "_heldMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4250:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10262,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4250:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10265,
                  "name": "_expirationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4279:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10264,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4279:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4167:145:50"
            },
            "returnParameters": {
              "id": 10273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10268,
                  "name": "solidHeldUpdateWithReward",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4336:33:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4336:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10270,
                  "name": "owedWeiToLiquidate",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4371:26:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10269,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4371:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10272,
                  "name": "flipMarkets",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4399:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10271,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4399:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4335:81:50"
            },
            "scope": 10370,
            "src": "4134:1560:50",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 10371,
        "src": "1843:3853:50"
      }
    ],
    "src": "603:5094:50"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/proxies/ExpiryProxy.sol",
    "exportedSymbols": {
      "ExpiryProxy": [
        10370
      ]
    },
    "id": 10371,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10057,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:50"
      },
      {
        "id": 10058,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:50"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 10060,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 37366,
        "src": "662:69:50",
        "symbolAliases": [
          {
            "foreign": 10059,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "id": 10062,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 38093,
        "src": "732:84:50",
        "symbolAliases": [
          {
            "foreign": 10061,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 10064,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 24694,
        "src": "818:80:50",
        "symbolAliases": [
          {
            "foreign": 10063,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../../protocol/lib/Account.sol",
        "id": 10066,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 24886,
        "src": "899:57:50",
        "symbolAliases": [
          {
            "foreign": 10065,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../../protocol/lib/Actions.sol",
        "id": 10068,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 25370,
        "src": "957:57:50",
        "symbolAliases": [
          {
            "foreign": 10067,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../../protocol/lib/Decimal.sol",
        "id": 10070,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 26024,
        "src": "1015:57:50",
        "symbolAliases": [
          {
            "foreign": 10069,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../../protocol/lib/Interest.sol",
        "id": 10072,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 27751,
        "src": "1073:59:50",
        "symbolAliases": [
          {
            "foreign": 10071,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol",
        "file": "../../protocol/lib/DolomiteMarginMath.sol",
        "id": 10074,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 26239,
        "src": "1133:79:50",
        "symbolAliases": [
          {
            "foreign": 10073,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../../protocol/lib/Monetary.sol",
        "id": 10076,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 27761,
        "src": "1213:59:50",
        "symbolAliases": [
          {
            "foreign": 10075,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 10078,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 28453,
        "src": "1273:57:50",
        "symbolAliases": [
          {
            "foreign": 10077,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../../protocol/lib/Types.sol",
        "id": 10080,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 31362,
        "src": "1331:53:50",
        "symbolAliases": [
          {
            "foreign": 10079,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol",
        "file": "../interfaces/IExpiry.sol",
        "id": 10082,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 4566,
        "src": "1386:52:50",
        "symbolAliases": [
          {
            "foreign": 10081,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/HasLiquidatorRegistry.sol",
        "file": "../helpers/HasLiquidatorRegistry.sol",
        "id": 10084,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 1723,
        "src": "1440:77:50",
        "symbolAliases": [
          {
            "foreign": 10083,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/LiquidatorProxyBase.sol",
        "file": "../helpers/LiquidatorProxyBase.sol",
        "id": 10086,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 2986,
        "src": "1518:73:50",
        "symbolAliases": [
          {
            "foreign": 10085,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
        "file": "../helpers/OnlyDolomiteMargin.sol",
        "id": 10088,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 3067,
        "src": "1592:71:50",
        "symbolAliases": [
          {
            "foreign": 10087,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol",
        "file": "../lib/AccountActionLib.sol",
        "id": 10090,
        "nodeType": "ImportDirective",
        "scope": 10371,
        "sourceUnit": 5820,
        "src": "1665:63:50",
        "symbolAliases": [
          {
            "foreign": 10089,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10091,
              "name": "HasLiquidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1722,
              "src": "1867:21:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_HasLiquidatorRegistry_$1722",
                "typeString": "contract HasLiquidatorRegistry"
              }
            },
            "id": 10092,
            "nodeType": "InheritanceSpecifier",
            "src": "1867:21:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10093,
              "name": "OnlyDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3066,
              "src": "1890:18:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OnlyDolomiteMargin_$3066",
                "typeString": "contract OnlyDolomiteMargin"
              }
            },
            "id": 10094,
            "nodeType": "InheritanceSpecifier",
            "src": "1890:18:50"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10095,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38092,
              "src": "1910:15:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$38092",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 10096,
            "nodeType": "InheritanceSpecifier",
            "src": "1910:15:50"
          }
        ],
        "contractDependencies": [
          1722,
          3066,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title ExpiryProxy\n@author Dolomite\n * Contract for expiring other accounts in DolomiteMargin.",
        "fullyImplemented": true,
        "id": 10370,
        "linearizedBaseContracts": [
          10370,
          38092,
          3066,
          1722
        ],
        "name": "ExpiryProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 10099,
            "libraryName": {
              "contractScope": null,
              "id": 10097,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37365,
              "src": "1938:8:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37365",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1932:27:50",
            "typeName": {
              "id": 10098,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1951:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 10102,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 10370,
            "src": "2010:36:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 10100,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2010:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45787069727950726f7879",
              "id": 10101,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2033:13:50",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b75de6e2c8bb3cff77863ff373d246e68db6eff9f87a6c37d5d4a9816e3c1aa5",
                "typeString": "literal_string \"ExpiryProxy\""
              },
              "value": "ExpiryProxy"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 10104,
            "name": "EXPIRY",
            "nodeType": "VariableDeclaration",
            "scope": 10370,
            "src": "2099:21:50",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IExpiry_$4565",
              "typeString": "contract IExpiry"
            },
            "typeName": {
              "contractScope": null,
              "id": 10103,
              "name": "IExpiry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4565,
              "src": "2099:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IExpiry_$4565",
                "typeString": "contract IExpiry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10125,
              "nodeType": "Block",
              "src": "2399:42:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10119,
                      "name": "EXPIRY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10104,
                      "src": "2409:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IExpiry_$4565",
                        "typeString": "contract IExpiry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10121,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10108,
                          "src": "2426:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 10120,
                        "name": "IExpiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4565,
                        "src": "2418:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IExpiry_$4565_$",
                          "typeString": "type(contract IExpiry)"
                        }
                      },
                      "id": 10122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2418:16:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IExpiry_$4565",
                        "typeString": "contract IExpiry"
                      }
                    },
                    "src": "2409:25:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IExpiry_$4565",
                      "typeString": "contract IExpiry"
                    }
                  },
                  "id": 10124,
                  "nodeType": "ExpressionStatement",
                  "src": "2409:25:50"
                }
              ]
            },
            "documentation": null,
            "id": 10126,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10113,
                    "name": "_liquidatorAssetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10106,
                    "src": "2329:24:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 10114,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10112,
                  "name": "HasLiquidatorRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1722,
                  "src": "2307:21:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_HasLiquidatorRegistry_$1722_$",
                    "typeString": "type(contract HasLiquidatorRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2307:47:50"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10116,
                    "name": "_dolomiteMargin",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10110,
                    "src": "2378:15:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 10117,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10115,
                  "name": "OnlyDolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3066,
                  "src": "2359:18:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_OnlyDolomiteMargin_$3066_$",
                    "typeString": "type(contract OnlyDolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2359:35:50"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10106,
                  "name": "_liquidatorAssetRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2195:32:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10105,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2195:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10108,
                  "name": "_expiry",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2237:15:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2237:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10110,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 10126,
                  "src": "2262:23:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2262:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2185:106:50"
            },
            "returnParameters": {
              "id": 10118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2399:0:50"
            },
            "scope": 10370,
            "src": "2173:268:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10256,
              "nodeType": "Block",
              "src": "2813:1315:50",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10150,
                              "name": "_solidAccount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10128,
                              "src": "2849:13:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 10151,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "2849:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10152,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "2872:3:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2872:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "2849:33:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10157,
                                "name": "_solidAccount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10128,
                                "src": "2921:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 10158,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "2921:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10159,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38107,
                                "src": "2942:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2942:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10155,
                              "name": "DOLOMITE_MARGIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2997,
                              "src": "2886:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                "typeString": "contract IDolomiteMargin"
                              }
                            },
                            "id": 10156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getIsLocalOperator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24489,
                            "src": "2886:34:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view external returns (bool)"
                            }
                          },
                          "id": 10161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2886:67:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2849:104:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10163,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10102,
                        "src": "2967:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53656e646572206e6f74206f70657261746f72",
                        "id": 10164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2985:21:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a4e0490ac0f28a200bf9eac5ba2e1a54617eacf228037541fe6d7aea2d8ff499",
                          "typeString": "literal_string \"Sender not operator\""
                        },
                        "value": "Sender not operator"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10165,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3020:3:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3020:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a4e0490ac0f28a200bf9eac5ba2e1a54617eacf228037541fe6d7aea2d8ff499",
                          "typeString": "literal_string \"Sender not operator\""
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10147,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2823:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 10149,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27930,
                      "src": "2823:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,address) pure"
                      }
                    },
                    "id": 10167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2823:217:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10168,
                  "nodeType": "ExpressionStatement",
                  "src": "2823:217:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 10178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10172,
                          "name": "_expirationTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10136,
                          "src": "3076:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10175,
                              "name": "_liquidAccount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10130,
                              "src": "3117:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10176,
                              "name": "_owedMarket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10132,
                              "src": "3133:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10173,
                              "name": "EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10104,
                              "src": "3100:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            },
                            "id": 10174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getExpiry",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4564,
                            "src": "3100:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                              "typeString": "function (struct Account.Info memory,uint256) view external returns (uint32)"
                            }
                          },
                          "id": 10177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3100:45:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "3076:69:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10179,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10102,
                        "src": "3159:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642065787069726174696f6e2074696d657374616d70",
                        "id": 10180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3177:30:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d950ed7e9d9f3397a339c43fed457299bd855f5f038ba61ac327db005adc80e",
                          "typeString": "literal_string \"Invalid expiration timestamp\""
                        },
                        "value": "Invalid expiration timestamp"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d950ed7e9d9f3397a339c43fed457299bd855f5f038ba61ac327db005adc80e",
                          "typeString": "literal_string \"Invalid expiration timestamp\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10169,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "3050:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 10171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "3050:12:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 10181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3050:167:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10182,
                  "nodeType": "ExpressionStatement",
                  "src": "3050:167:50"
                },
                {
                  "assignments": [
                    10187
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10187,
                      "name": "accounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3258:30:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                        "typeString": "struct Account.Info[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10185,
                          "name": "Account.Info",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24851,
                          "src": "3258:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                            "typeString": "struct Account.Info"
                          }
                        },
                        "id": 10186,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3258:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_storage_$dyn_storage_ptr",
                          "typeString": "struct Account.Info[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10193,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 10191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3310:1:50",
                        "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"
                        }
                      ],
                      "id": 10190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3291:18:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Info_$24851_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Account.Info memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10188,
                          "name": "Account.Info",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24851,
                          "src": "3295:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                            "typeString": "struct Account.Info"
                          }
                        },
                        "id": 10189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3295:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_storage_$dyn_storage_ptr",
                          "typeString": "struct Account.Info[]"
                        }
                      }
                    },
                    "id": 10192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3291:21:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory",
                      "typeString": "struct Account.Info memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3258:54:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10194,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "3322:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      "id": 10196,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3331:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3322:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10197,
                      "name": "_solidAccount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10128,
                      "src": "3336:13:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "src": "3322:27:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                      "typeString": "struct Account.Info memory"
                    }
                  },
                  "id": 10199,
                  "nodeType": "ExpressionStatement",
                  "src": "3322:27:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10200,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "3359:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      "id": 10202,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3368:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3359:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10203,
                      "name": "_liquidAccount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10130,
                      "src": "3373:14:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                        "typeString": "struct Account.Info memory"
                      }
                    },
                    "src": "3359:28:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                      "typeString": "struct Account.Info memory"
                    }
                  },
                  "id": 10205,
                  "nodeType": "ExpressionStatement",
                  "src": "3359:28:50"
                },
                {
                  "assignments": [
                    10210
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10210,
                      "name": "actions",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3398:35:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                        "typeString": "struct Actions.ActionArgs[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10208,
                          "name": "Actions.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24930,
                          "src": "3398:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$24930_storage_ptr",
                            "typeString": "struct Actions.ActionArgs"
                          }
                        },
                        "id": 10209,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3398:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_storage_$dyn_storage_ptr",
                          "typeString": "struct Actions.ActionArgs[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10216,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3461:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 10213,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3436:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Actions.ActionArgs memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10211,
                          "name": "Actions.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 24930,
                          "src": "3440:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$24930_storage_ptr",
                            "typeString": "struct Actions.ActionArgs"
                          }
                        },
                        "id": 10212,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3440:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_storage_$dyn_storage_ptr",
                          "typeString": "struct Actions.ActionArgs[]"
                        }
                      }
                    },
                    "id": 10215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3436:27:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory",
                      "typeString": "struct Actions.ActionArgs memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3398:65:50"
                },
                {
                  "assignments": [
                    10218,
                    10220,
                    10222
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10218,
                      "name": "solidHeldUpdateWithReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3474:33:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10217,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3474:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10220,
                      "name": "owedWeiToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3509:26:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10219,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3509:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10222,
                      "name": "flipMarkets",
                      "nodeType": "VariableDeclaration",
                      "scope": 10256,
                      "src": "3537:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 10221,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3537:4:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10229,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10224,
                        "name": "_liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10130,
                        "src": "3595:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10225,
                        "name": "_owedMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10132,
                        "src": "3623:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10226,
                        "name": "_heldMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10134,
                        "src": "3648:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10227,
                        "name": "_expirationTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10136,
                        "src": "3673:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 10223,
                      "name": "_getAmountsForExpiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10369,
                      "src": "3557:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$_t_bool_$",
                        "typeString": "function (struct Account.Info memory,uint256,uint256,uint32) view returns (uint256,uint256,bool)"
                      }
                    },
                    "id": 10228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3557:146:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bool_$",
                      "typeString": "tuple(uint256,uint256,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3473:230:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10230,
                        "name": "actions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10210,
                        "src": "3713:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      },
                      "id": 10232,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 10231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3721:1:50",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3713:10:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$24930_memory",
                        "typeString": "struct Actions.ActionArgs memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3808:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 10236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3848:1:50",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "argumentTypes": null,
                          "id": 10237,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10132,
                          "src": "3863:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10238,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10134,
                          "src": "3888:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10240,
                              "name": "EXPIRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10104,
                              "src": "3921:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IExpiry_$4565",
                                "typeString": "contract IExpiry"
                              }
                            ],
                            "id": 10239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3913:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 10241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3913:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10242,
                          "name": "_expirationTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10136,
                          "src": "3942:20:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10243,
                          "name": "solidHeldUpdateWithReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10218,
                          "src": "3976:25:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10244,
                          "name": "owedWeiToLiquidate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10220,
                          "src": "4015:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10245,
                          "name": "flipMarkets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10222,
                          "src": "4047:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10233,
                          "name": "AccountActionLib",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5819,
                          "src": "3726:16:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                            "typeString": "type(library AccountActionLib)"
                          }
                        },
                        "id": 10234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "encodeExpiryLiquidateAction",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5505,
                        "src": "3726:44:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint32_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_struct$_ActionArgs_$24930_memory_ptr_$",
                          "typeString": "function (uint256,uint256,uint256,uint256,address,uint32,uint256,uint256,bool) pure returns (struct Actions.ActionArgs memory)"
                        }
                      },
                      "id": 10246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3726:342:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$24930_memory_ptr",
                        "typeString": "struct Actions.ActionArgs memory"
                      }
                    },
                    "src": "3713:355:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$24930_memory",
                      "typeString": "struct Actions.ActionArgs memory"
                    }
                  },
                  "id": 10248,
                  "nodeType": "ExpressionStatement",
                  "src": "3713:355:50"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10252,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10187,
                        "src": "4103:8:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10253,
                        "name": "actions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10210,
                        "src": "4113:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr",
                          "typeString": "struct Account.Info memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr",
                          "typeString": "struct Actions.ActionArgs memory[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10249,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4079:15:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      "id": 10251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "operate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24512,
                      "src": "4079:23:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_Info_$24851_memory_$dyn_memory_ptr_$_t_array$_t_struct$_ActionArgs_$24930_memory_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (struct Account.Info memory[] memory,struct Actions.ActionArgs memory[] memory) external"
                      }
                    },
                    "id": 10254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4079:42:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10255,
                  "nodeType": "ExpressionStatement",
                  "src": "4079:42:50"
                }
              ]
            },
            "documentation": null,
            "id": 10257,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10139,
                    "name": "_owedMarket",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10132,
                    "src": "2714:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 10140,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10138,
                  "name": "requireIsAssetWhitelistedForLiquidation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1631,
                  "src": "2674:39:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2674:52:50"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10142,
                    "name": "_heldMarket",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10134,
                    "src": "2775:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 10143,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10141,
                  "name": "requireIsAssetWhitelistedForLiquidation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1631,
                  "src": "2735:39:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2735:52:50"
              },
              {
                "arguments": null,
                "id": 10145,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10144,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "2796:12:50",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2796:12:50"
              }
            ],
            "name": "expire",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10128,
                  "name": "_solidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2472:33:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10127,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2472:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10130,
                  "name": "_liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2515:34:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10129,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2515:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10132,
                  "name": "_owedMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2559:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2559:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10134,
                  "name": "_heldMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2588:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2588:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10136,
                  "name": "_expirationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 10257,
                  "src": "2617:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10135,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2462:188:50"
            },
            "returnParameters": {
              "id": 10146,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2813:0:50"
            },
            "scope": 10370,
            "src": "2447:1681:50",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10368,
              "nodeType": "Block",
              "src": "4417:1277:50",
              "statements": [
                {
                  "assignments": [
                    10275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10275,
                      "name": "liquidHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4427:21:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4427:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10282,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10278,
                          "name": "_liquidAccount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10259,
                          "src": "4481:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10279,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10263,
                          "src": "4497:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10276,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4451:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getAccountWei",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24407,
                        "src": "4451:29:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Account.Info memory,uint256) view external returns (struct Types.Wei memory)"
                        }
                      },
                      "id": 10280,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4451:58:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei memory"
                      }
                    },
                    "id": 10281,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 31148,
                    "src": "4451:64:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4427:88:50"
                },
                {
                  "assignments": [
                    10284
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10284,
                      "name": "liquidOwedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4525:21:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10283,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4525:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10291,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10287,
                          "name": "_liquidAccount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10259,
                          "src": "4579:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10288,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10261,
                          "src": "4595:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                            "typeString": "struct Account.Info memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10285,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4549:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getAccountWei",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24407,
                        "src": "4549:29:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Account.Info memory,uint256) view external returns (struct Types.Wei memory)"
                        }
                      },
                      "id": 10289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4549:58:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei memory"
                      }
                    },
                    "id": 10290,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 31148,
                    "src": "4549:64:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4525:88:50"
                },
                {
                  "assignments": [
                    10293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10293,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4624:17:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10292,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4624:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10299,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10296,
                          "name": "_heldMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10263,
                          "src": "4675:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10294,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4644:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24243,
                        "src": "4644:30:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$",
                          "typeString": "function (uint256) view external returns (struct Monetary.Price memory)"
                        }
                      },
                      "id": 10297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4644:43:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 10298,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "4644:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4624:69:50"
                },
                {
                  "assignments": [
                    10301
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10301,
                      "name": "owedPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4703:17:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10300,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4703:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10307,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10304,
                          "name": "_owedMarket",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10261,
                          "src": "4754:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10302,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "4723:15:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 10303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24243,
                        "src": "4723:30:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$",
                          "typeString": "function (uint256) view external returns (struct Monetary.Price memory)"
                        }
                      },
                      "id": 10305,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4723:43:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 10306,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "4723:49:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4703:69:50"
                },
                {
                  "assignments": [
                    null,
                    10311
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 10311,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 10368,
                      "src": "4785:34:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10310,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "4785:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10319,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10314,
                        "name": "_liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10259,
                        "src": "4878:14:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10315,
                        "name": "_heldMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10263,
                        "src": "4906:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10316,
                        "name": "_owedMarket",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10261,
                        "src": "4931:11:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10317,
                        "name": "_expirationTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10265,
                        "src": "4956:20:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10312,
                        "name": "EXPIRY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10104,
                        "src": "4823:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IExpiry_$4565",
                          "typeString": "contract IExpiry"
                        }
                      },
                      "id": 10313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidationSpreadAdjustedPrices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4542,
                      "src": "4823:41:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Account.Info memory,uint256,uint256,uint32) view external returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 10318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4823:163:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4782:204:50"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10322,
                          "name": "heldPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10293,
                          "src": "5019:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10320,
                          "name": "liquidHeldWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10275,
                          "src": "5001:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 37282,
                        "src": "5001:17:50",
                        "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": 10323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5001:28:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10326,
                          "name": "owedPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10301,
                          "src": "5050:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10324,
                          "name": "liquidOwedWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10284,
                          "src": "5032:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 37282,
                        "src": "5032:17:50",
                        "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": 10327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5032:28:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5001:59:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10366,
                    "nodeType": "Block",
                    "src": "5417:271:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10348,
                            "name": "solidHeldUpdateWithReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10268,
                            "src": "5431:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10351,
                                "name": "liquidOwedWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10284,
                                "src": "5506:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10352,
                                  "name": "owedPriceAdj",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10311,
                                  "src": "5537:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                    "typeString": "struct Monetary.Price memory"
                                  }
                                },
                                "id": 10353,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27755,
                                "src": "5537:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10354,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10293,
                                "src": "5573:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10349,
                                "name": "DolomiteMarginMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26238,
                                "src": "5459:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                                  "typeString": "type(library DolomiteMarginMath)"
                                }
                              },
                              "id": 10350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPartial",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26056,
                              "src": "5459:29:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5459:137:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5431:165:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10357,
                        "nodeType": "ExpressionStatement",
                        "src": "5431:165:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10358,
                            "name": "owedWeiToLiquidate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10270,
                            "src": "5610:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10359,
                            "name": "liquidOwedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10284,
                            "src": "5631:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5610:34:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10361,
                        "nodeType": "ExpressionStatement",
                        "src": "5610:34:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10362,
                            "name": "flipMarkets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10272,
                            "src": "5658:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 10363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5672:5:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "5658:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10365,
                        "nodeType": "ExpressionStatement",
                        "src": "5658:19:50"
                      }
                    ]
                  },
                  "id": 10367,
                  "nodeType": "IfStatement",
                  "src": "4997:691:50",
                  "trueBody": {
                    "id": 10347,
                    "nodeType": "Block",
                    "src": "5062:349:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10329,
                            "name": "solidHeldUpdateWithReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10268,
                            "src": "5148:25:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10330,
                            "name": "liquidHeldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10275,
                            "src": "5176:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5148:41:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10332,
                        "nodeType": "ExpressionStatement",
                        "src": "5148:41:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10333,
                            "name": "owedWeiToLiquidate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10270,
                            "src": "5203:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10336,
                                "name": "liquidHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10275,
                                "src": "5278:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10337,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10293,
                                "src": "5309:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10338,
                                  "name": "owedPriceAdj",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10311,
                                  "src": "5336:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                    "typeString": "struct Monetary.Price memory"
                                  }
                                },
                                "id": 10339,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27755,
                                "src": "5336:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 10334,
                                "name": "DolomiteMarginMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26238,
                                "src": "5224:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                                  "typeString": "type(library DolomiteMarginMath)"
                                }
                              },
                              "id": 10335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPartialRoundUp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26097,
                              "src": "5224:36:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5224:144:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5203:165:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10342,
                        "nodeType": "ExpressionStatement",
                        "src": "5203:165:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10343,
                            "name": "flipMarkets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10272,
                            "src": "5382:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 10344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5396:4:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5382:18:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10346,
                        "nodeType": "ExpressionStatement",
                        "src": "5382:18:50"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10369,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getAmountsForExpiration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10259,
                  "name": "_liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4177:34:50",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10258,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "4177:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10261,
                  "name": "_owedMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4221:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4221:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10263,
                  "name": "_heldMarket",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4250:19:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10262,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4250:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10265,
                  "name": "_expirationTimestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4279:27:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10264,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4279:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4167:145:50"
            },
            "returnParameters": {
              "id": 10273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10268,
                  "name": "solidHeldUpdateWithReward",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4336:33:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4336:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10270,
                  "name": "owedWeiToLiquidate",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4371:26:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10269,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4371:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10272,
                  "name": "flipMarkets",
                  "nodeType": "VariableDeclaration",
                  "scope": 10369,
                  "src": "4399:16:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10271,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4399:4:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4335:81:50"
            },
            "scope": 10370,
            "src": "4134:1560:50",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 10371,
        "src": "1843:3853:50"
      }
    ],
    "src": "603:5094:50"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:28.661Z",
  "devdoc": {
    "author": "Dolomite * Contract for expiring other accounts in DolomiteMargin.",
    "methods": {},
    "title": "ExpiryProxy"
  },
  "userdoc": {
    "methods": {}
  }
}