{
  "contractName": "PublicSortedDoublyLL",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "updater",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_updater",
          "type": "address"
        },
        {
          "name": "_maxSize",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_updater",
          "type": "address"
        }
      ],
      "name": "setUpdater",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maxSize",
          "type": "uint256"
        }
      ],
      "name": "setMaxSize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        },
        {
          "name": "_key",
          "type": "uint256"
        },
        {
          "name": "_prevId",
          "type": "address"
        },
        {
          "name": "_nextId",
          "type": "address"
        }
      ],
      "name": "insert",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "remove",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        },
        {
          "name": "_newKey",
          "type": "uint256"
        },
        {
          "name": "_prevId",
          "type": "address"
        },
        {
          "name": "_nextId",
          "type": "address"
        }
      ],
      "name": "updateKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "contains",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMaxSize",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "getKey",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getFirst",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLast",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "getNext",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "address"
        }
      ],
      "name": "getPrev",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506113d7806100206000396000f3fe6080604052600436106100da5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631e22314381146100df57806329092d0e146101105780633855323f1461014557806346f7cf871461018e5780634d622831146101d75780635dbe47e8146101ec57806363e1d57c14610233578063765e01591461025a578063816e117c1461028d57806393790f44146102b75780639d54f419146102ea578063b72703ac1461031d578063cd6dc68714610350578063de8fa43114610389578063df034cd01461039e575b600080fd5b3480156100eb57600080fd5b506100f46103b3565b60408051600160a060020a039092168252519081900360200190f35b34801561011c57600080fd5b506101436004803603602081101561013357600080fd5b5035600160a060020a03166103c4565b005b34801561015157600080fd5b506101436004803603608081101561016857600080fd5b50600160a060020a03813581169160208101359160408201358116916060013516610428565b34801561019a57600080fd5b50610143600480360360808110156101b157600080fd5b50600160a060020a03813581169160208101359160408201358116916060013516610492565b3480156101e357600080fd5b506100f46104f6565b3480156101f857600080fd5b5061021f6004803603602081101561020f57600080fd5b5035600160a060020a0316610502565b604080519115158252519081900360200190f35b34801561023f57600080fd5b5061024861051b565b60408051918252519081900360200190f35b34801561026657600080fd5b506100f46004803603602081101561027d57600080fd5b5035600160a060020a0316610521565b34801561029957600080fd5b50610143600480360360208110156102b057600080fd5b5035610534565b3480156102c357600080fd5b50610248600480360360208110156102da57600080fd5b5035600160a060020a0316610595565b3480156102f657600080fd5b506101436004803603602081101561030d57600080fd5b5035600160a060020a03166105a8565b34801561032957600080fd5b506100f46004803603602081101561034057600080fd5b5035600160a060020a031661061a565b34801561035c57600080fd5b506101436004803603604081101561037357600080fd5b50600160a060020a03813516906020013561062d565b34801561039557600080fd5b50610248610732565b3480156103aa57600080fd5b506100f461073e565b60006103bf603361074d565b905090565b603854600160a060020a03163314610414576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61042560338263ffffffff61075a16565b50565b603854600160a060020a03163314610478576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61048c60338585858563ffffffff61099816565b50505050565b603854600160a060020a031633146104e2576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61048c60338585858563ffffffff610a4516565b60006103bf6033610df5565b600061051560338363ffffffff610e0516565b92915050565b60355490565b600061051560338363ffffffff610e2516565b603854600160a060020a03163314610584576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61042560338263ffffffff610e4b16565b600061051560338363ffffffff610ed416565b603854600160a060020a031633146105f8576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b60388054600160a060020a031916600160a060020a0392909216919091179055565b600061051560338363ffffffff610ef316565b600054610100900460ff16806106465750610646610f19565b80610654575060005460ff16155b15156106d0576040805160e560020a62461bcd02815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a6564000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600161010061ff00198316811760ff19169190911790925560388054600160a060020a031916600160a060020a0386161790550460ff16610716603383610e4b565b600080549115156101000261ff00199092169190911790555050565b60006103bf6033610f1f565b603854600160a060020a031681565b54600160a060020a031690565b6107648282610e05565b15156107e0576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f742072656d6f7465206e6f6465207468617420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60018260030154111561091c578154600160a060020a038281169116141561084d57600160a060020a038181166000908152600484016020526040808220600101548554908416600160a060020a0319918216178087559093168252902060020180549091169055610917565b6001820154600160a060020a03828116911614156108b657600160a060020a0381811660009081526004840160205260408082206002015460018087018054928616600160a060020a031993841617908190559094168352912090910180549091169055610917565b600160a060020a0381811660009081526004840160205260408082206001808201805460029384018054881687528587209093018054918816600160a060020a03199283161790559154905486168552929093200180549190931691161790555b610938565b8154600160a060020a0319908116835560018301805490911690555b600160a060020a0381166000908152600483016020526040812090815560018082018054600160a060020a031990811690915560029092018054909216909155600383015461098c9163ffffffff610f2616565b82600301819055505050565b6109a28585610e05565b1515610a1e576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f7420757064617465206e6f6465207468617420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610a28858561075a565b6000831115610a3e57610a3e8585858585610a45565b5050505050565b610a4e85610f3b565b15610aa3576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f7420696e7365727420696e746f20612066756c6c206c6973740000604482015290519081900360640190fd5b610aad8585610e05565b15610b28576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f7420696e73657274206e6f6465207468617420616c72656164792060448201527f6578697374730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0384161515610bae576040805160e560020a62461bcd02815260206004820152602160248201527f63616e6e6f7420696e73657274206e6f646520776974682061206e756c6c206960448201527f6400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008311610c06576040805160e560020a62461bcd02815260206004820181905260248201527f63616e6e6f7420696e73657274206e6f64652077697468207a65726f206b6579604482015290519081900360640190fd5b8181610c1487868484610f4a565b1515610c2c57610c2687868484611092565b90925090505b600160a060020a03808716600090815260048901602052604090208690558216158015610c605750600160a060020a038116155b15610c92578654600160a060020a038716600160a060020a031991821681178955600189018054909216179055610dce565b600160a060020a0382161515610cfa578654600160a060020a03878116600081815260048b0160205260408082206001018054958516600160a060020a03199687161790558b5490931681529190912060020180548316821790558854909116178755610dce565b600160a060020a0381161515610d675760018781018054600160a060020a03898116600081815260048d0160205260408082206002018054958516600160a060020a0319968716179055855490931681529190912090930180548216841790558154169091179055610dce565b600160a060020a03808716600081815260048a01602052604080822060018082018054878916600160a060020a0319918216811790925560029384018054988b16988216891790559685528385209091018054871686179055835291200180549092161790555b6003870154610de490600163ffffffff6111b616565b876003018190555050505050505050565b60010154600160a060020a031690565b600160a060020a0316600090815260049190910160205260408120541190565b600160a060020a0380821660009081526004840160205260409020600101541692915050565b60028201548111610ecc576040805160e560020a62461bcd02815260206004820152602e60248201527f6e6577206d61782073697a65206d75737420626520677265617465722074686160448201527f6e206f6c64206d61782073697a65000000000000000000000000000000000000606482015290519081900360840190fd5b600290910155565b600160a060020a03166000908152600491909101602052604090205490565b600160a060020a0380821660009081526004840160205260409020600201541692915050565b303b1590565b6003015490565b600082821115610f3557600080fd5b50900390565b60028101546003909101541490565b6000600160a060020a038316158015610f6a5750600160a060020a038216155b15610f7f57610f78856111cf565b905061108a565b600160a060020a0383161515610fca578454600160a060020a038381169116148015610f78575050600160a060020a038116600090815260048501602052604090205483101561108a565b600160a060020a0382161515611018576001850154600160a060020a038481169116148015610f78575050600160a060020a038216600090815260048501602052604090205483111561108a565b600160a060020a03838116600090815260048701602052604090206001015481169083161480156110635750600160a060020a03831660009081526004860160205260409020548411155b8015610f78575050600160a060020a03811660009081526004850160205260409020548310155b949350505050565b6000808383600160a060020a038216156110df576110b08883610e05565b15806110d55750600160a060020a038216600090815260048901602052604090205487115b156110df57600091505b600160a060020a03811615611126576110f88882610e05565b158061111d5750600160a060020a038116600090815260048901602052604090205487105b15611126575060005b600160a060020a0382161580156111445750600160a060020a038116155b1561116c5787546111619089908990600160a060020a03166111d7565b9350935050506111ad565b600160a060020a0382161515611187576111618888836112b1565b600160a060020a03811615156111a2576111618888846111d7565b6111618888846111d7565b94509492505050565b6000828201838110156111c857600080fd5b9392505050565b600301541590565b82546000908190600160a060020a0384811691161480156112125750600160a060020a03831660009081526004860160205260409020548410155b15611222575060009050816112a9565b600160a060020a0380841660009081526004870160205260409020600101548491165b600160a060020a03821615801590611266575061126487878484610f4a565b155b156112a35750600160a060020a03908116600090815260048701602052604080822060019081015484168084529190922090910154909116611245565b90925090505b935093915050565b60018301546000908190600160a060020a0384811691161480156112ef5750600160a060020a03831660009081526004860160205260409020548411155b156112ff575081905060006112a9565b600160a060020a0380841660009081526004870160205260409020600201548491165b600160a060020a03821615801590611343575061134187878385610f4a565b155b156113805750600160a060020a03908116600090815260048701602052604080822060029081015484168084529190922090910154909116611322565b96909550935050505056fe73656e646572206973206e6f7420616e20757064617465720000000000000000a165627a7a723058200e9a0730c930ea2b9ae44bf77953b3fded795968cd11a6d5041eaca13d188f5f0029",
  "deployedBytecode": "0x6080604052600436106100da5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631e22314381146100df57806329092d0e146101105780633855323f1461014557806346f7cf871461018e5780634d622831146101d75780635dbe47e8146101ec57806363e1d57c14610233578063765e01591461025a578063816e117c1461028d57806393790f44146102b75780639d54f419146102ea578063b72703ac1461031d578063cd6dc68714610350578063de8fa43114610389578063df034cd01461039e575b600080fd5b3480156100eb57600080fd5b506100f46103b3565b60408051600160a060020a039092168252519081900360200190f35b34801561011c57600080fd5b506101436004803603602081101561013357600080fd5b5035600160a060020a03166103c4565b005b34801561015157600080fd5b506101436004803603608081101561016857600080fd5b50600160a060020a03813581169160208101359160408201358116916060013516610428565b34801561019a57600080fd5b50610143600480360360808110156101b157600080fd5b50600160a060020a03813581169160208101359160408201358116916060013516610492565b3480156101e357600080fd5b506100f46104f6565b3480156101f857600080fd5b5061021f6004803603602081101561020f57600080fd5b5035600160a060020a0316610502565b604080519115158252519081900360200190f35b34801561023f57600080fd5b5061024861051b565b60408051918252519081900360200190f35b34801561026657600080fd5b506100f46004803603602081101561027d57600080fd5b5035600160a060020a0316610521565b34801561029957600080fd5b50610143600480360360208110156102b057600080fd5b5035610534565b3480156102c357600080fd5b50610248600480360360208110156102da57600080fd5b5035600160a060020a0316610595565b3480156102f657600080fd5b506101436004803603602081101561030d57600080fd5b5035600160a060020a03166105a8565b34801561032957600080fd5b506100f46004803603602081101561034057600080fd5b5035600160a060020a031661061a565b34801561035c57600080fd5b506101436004803603604081101561037357600080fd5b50600160a060020a03813516906020013561062d565b34801561039557600080fd5b50610248610732565b3480156103aa57600080fd5b506100f461073e565b60006103bf603361074d565b905090565b603854600160a060020a03163314610414576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61042560338263ffffffff61075a16565b50565b603854600160a060020a03163314610478576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61048c60338585858563ffffffff61099816565b50505050565b603854600160a060020a031633146104e2576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61048c60338585858563ffffffff610a4516565b60006103bf6033610df5565b600061051560338363ffffffff610e0516565b92915050565b60355490565b600061051560338363ffffffff610e2516565b603854600160a060020a03163314610584576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b61042560338263ffffffff610e4b16565b600061051560338363ffffffff610ed416565b603854600160a060020a031633146105f8576040805160e560020a62461bcd028152602060048201526018602482015260008051602061138c833981519152604482015290519081900360640190fd5b60388054600160a060020a031916600160a060020a0392909216919091179055565b600061051560338363ffffffff610ef316565b600054610100900460ff16806106465750610646610f19565b80610654575060005460ff16155b15156106d0576040805160e560020a62461bcd02815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a6564000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600161010061ff00198316811760ff19169190911790925560388054600160a060020a031916600160a060020a0386161790550460ff16610716603383610e4b565b600080549115156101000261ff00199092169190911790555050565b60006103bf6033610f1f565b603854600160a060020a031681565b54600160a060020a031690565b6107648282610e05565b15156107e0576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f742072656d6f7465206e6f6465207468617420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60018260030154111561091c578154600160a060020a038281169116141561084d57600160a060020a038181166000908152600484016020526040808220600101548554908416600160a060020a0319918216178087559093168252902060020180549091169055610917565b6001820154600160a060020a03828116911614156108b657600160a060020a0381811660009081526004840160205260408082206002015460018087018054928616600160a060020a031993841617908190559094168352912090910180549091169055610917565b600160a060020a0381811660009081526004840160205260408082206001808201805460029384018054881687528587209093018054918816600160a060020a03199283161790559154905486168552929093200180549190931691161790555b610938565b8154600160a060020a0319908116835560018301805490911690555b600160a060020a0381166000908152600483016020526040812090815560018082018054600160a060020a031990811690915560029092018054909216909155600383015461098c9163ffffffff610f2616565b82600301819055505050565b6109a28585610e05565b1515610a1e576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f7420757064617465206e6f6465207468617420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610a28858561075a565b6000831115610a3e57610a3e8585858585610a45565b5050505050565b610a4e85610f3b565b15610aa3576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f7420696e7365727420696e746f20612066756c6c206c6973740000604482015290519081900360640190fd5b610aad8585610e05565b15610b28576040805160e560020a62461bcd02815260206004820152602660248201527f63616e6e6f7420696e73657274206e6f6465207468617420616c72656164792060448201527f6578697374730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0384161515610bae576040805160e560020a62461bcd02815260206004820152602160248201527f63616e6e6f7420696e73657274206e6f646520776974682061206e756c6c206960448201527f6400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008311610c06576040805160e560020a62461bcd02815260206004820181905260248201527f63616e6e6f7420696e73657274206e6f64652077697468207a65726f206b6579604482015290519081900360640190fd5b8181610c1487868484610f4a565b1515610c2c57610c2687868484611092565b90925090505b600160a060020a03808716600090815260048901602052604090208690558216158015610c605750600160a060020a038116155b15610c92578654600160a060020a038716600160a060020a031991821681178955600189018054909216179055610dce565b600160a060020a0382161515610cfa578654600160a060020a03878116600081815260048b0160205260408082206001018054958516600160a060020a03199687161790558b5490931681529190912060020180548316821790558854909116178755610dce565b600160a060020a0381161515610d675760018781018054600160a060020a03898116600081815260048d0160205260408082206002018054958516600160a060020a0319968716179055855490931681529190912090930180548216841790558154169091179055610dce565b600160a060020a03808716600081815260048a01602052604080822060018082018054878916600160a060020a0319918216811790925560029384018054988b16988216891790559685528385209091018054871686179055835291200180549092161790555b6003870154610de490600163ffffffff6111b616565b876003018190555050505050505050565b60010154600160a060020a031690565b600160a060020a0316600090815260049190910160205260408120541190565b600160a060020a0380821660009081526004840160205260409020600101541692915050565b60028201548111610ecc576040805160e560020a62461bcd02815260206004820152602e60248201527f6e6577206d61782073697a65206d75737420626520677265617465722074686160448201527f6e206f6c64206d61782073697a65000000000000000000000000000000000000606482015290519081900360840190fd5b600290910155565b600160a060020a03166000908152600491909101602052604090205490565b600160a060020a0380821660009081526004840160205260409020600201541692915050565b303b1590565b6003015490565b600082821115610f3557600080fd5b50900390565b60028101546003909101541490565b6000600160a060020a038316158015610f6a5750600160a060020a038216155b15610f7f57610f78856111cf565b905061108a565b600160a060020a0383161515610fca578454600160a060020a038381169116148015610f78575050600160a060020a038116600090815260048501602052604090205483101561108a565b600160a060020a0382161515611018576001850154600160a060020a038481169116148015610f78575050600160a060020a038216600090815260048501602052604090205483111561108a565b600160a060020a03838116600090815260048701602052604090206001015481169083161480156110635750600160a060020a03831660009081526004860160205260409020548411155b8015610f78575050600160a060020a03811660009081526004850160205260409020548310155b949350505050565b6000808383600160a060020a038216156110df576110b08883610e05565b15806110d55750600160a060020a038216600090815260048901602052604090205487115b156110df57600091505b600160a060020a03811615611126576110f88882610e05565b158061111d5750600160a060020a038116600090815260048901602052604090205487105b15611126575060005b600160a060020a0382161580156111445750600160a060020a038116155b1561116c5787546111619089908990600160a060020a03166111d7565b9350935050506111ad565b600160a060020a0382161515611187576111618888836112b1565b600160a060020a03811615156111a2576111618888846111d7565b6111618888846111d7565b94509492505050565b6000828201838110156111c857600080fd5b9392505050565b600301541590565b82546000908190600160a060020a0384811691161480156112125750600160a060020a03831660009081526004860160205260409020548410155b15611222575060009050816112a9565b600160a060020a0380841660009081526004870160205260409020600101548491165b600160a060020a03821615801590611266575061126487878484610f4a565b155b156112a35750600160a060020a03908116600090815260048701602052604080822060019081015484168084529190922090910154909116611245565b90925090505b935093915050565b60018301546000908190600160a060020a0384811691161480156112ef5750600160a060020a03831660009081526004860160205260409020548411155b156112ff575081905060006112a9565b600160a060020a0380841660009081526004870160205260409020600201548491165b600160a060020a03821615801590611343575061134187878385610f4a565b155b156113805750600160a060020a03908116600090815260048701602052604080822060029081015484168084529190922090910154909116611322565b96909550935050505056fe73656e646572206973206e6f7420616e20757064617465720000000000000000a165627a7a723058200e9a0730c930ea2b9ae44bf77953b3fded795968cd11a6d5041eaca13d188f5f0029",
  "sourceMap": "103:2005:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;103:2005:0;;;;;;;",
  "deployedSourceMap": "103:2005:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:89:0;;;;;;;;-1:-1:-1;;;;;1710:89:0;;;;;;;;;;;;;;996:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;996:81:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;996:81:0;-1:-1:-1;;;;;996:81:0;;;;;1083:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1083:223:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1083:223:0;;;;;;;;;;;;;;;;;;;;;;;778:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:212:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;778:212:0;;;;;;;;;;;;;;;;;;;;;;;1805:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:87:0;;;;1312:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1312:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1312:100:0;-1:-1:-1;;;;;1312:100:0;;;;;;;;;;;;;;;;;;;;;1511:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1511:88:0;;;;;;;;;;;;;;;;;;;;1898:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1898:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1898:101:0;-1:-1:-1;;;;;1898:101:0;;;673:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;673:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;673:99:0;;;1605;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1605:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1605:99:0;-1:-1:-1;;;;;1605:99:0;;;575:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;575:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;575:92:0;-1:-1:-1;;;;;575:92:0;;;2005:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2005:101:0;-1:-1:-1;;;;;2005:101:0;;;424:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;424:145:0;;;;;;;;;1418:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1418:87:0;;;;246:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;246:22:0;;;;1710:89;1751:7;1777:15;:4;:13;:15::i;:::-;1770:22;;1710:89;:::o;996:81::-;343:7;;-1:-1:-1;;;;;343:7:0;329:10;:21;308:92;;;;;-1:-1:-1;;;;;308:92:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;308:92:0;;;;;;;;;;;;;;;1054:16;:4;1066:3;1054:16;:11;:16;:::i;:::-;996:81;:::o;1083:223::-;343:7;;-1:-1:-1;;;;;343:7:0;329:10;:21;308:92;;;;;-1:-1:-1;;;;;308:92:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;308:92:0;;;;;;;;;;;;;;;1253:46;:4;1268:3;1273:7;1282;1291;1253:46;:14;:46;:::i;:::-;1083:223;;;;:::o;778:212::-;343:7;;-1:-1:-1;;;;;343:7:0;329:10;:21;308:92;;;;;-1:-1:-1;;;;;308:92:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;308:92:0;;;;;;;;;;;;;;;943:40;:4;955:3;960:4;966:7;975;943:40;:11;:40;:::i;1805:87::-;1845:7;1871:14;:4;:12;:14::i;1312:100::-;1364:4;1387:18;:4;1401:3;1387:18;:13;:18;:::i;:::-;1380:25;1312:100;-1:-1:-1;;1312:100:0:o;1511:88::-;1580:12;;1511:88;:::o;1898:101::-;1949:7;1975:17;:4;1988:3;1975:17;:12;:17;:::i;673:99::-;343:7;;-1:-1:-1;;;;;343:7:0;329:10;:21;308:92;;;;;-1:-1:-1;;;;;308:92:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;308:92:0;;;;;;;;;;;;;;;740:25;:4;756:8;740:25;:15;:25;:::i;1605:99::-;1655:7;1681:16;:4;1693:3;1681:16;:11;:16;:::i;575:92::-;343:7;;-1:-1:-1;;;;;343:7:0;329:10;:21;308:92;;;;;-1:-1:-1;;;;;308:92:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;308:92:0;;;;;;;;;;;;;;;642:7;:18;;-1:-1:-1;;;;;;642:18:0;-1:-1:-1;;;;;642:18:0;;;;;;;;;;575:92::o;2005:101::-;2056:7;2082:17;:4;2095:3;2082:17;:12;:17;:::i;424:145::-;1024:12:3;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:3;;;;1059:12;1024:47;1016:106;;;;;;;-1:-1:-1;;;;;1016:106:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:20;1152:12;;;;-1:-1:-1;;1170:19:3;;;;-1:-1:-1;;1195:18:3;;;;;;;;509:7:0;:18;;-1:-1:-1;;;;;;509:18:0;-1:-1:-1;;;;;509:18:0;;;;;1152:12:3;;;537:25:0;:4;553:8;537:15;:25::i;:::-;1228:12:3;:30;;;;;;;-1:-1:-1;;1228:30:3;;;;;;;;;-1:-1:-1;;424:145:0:o;1418:87::-;1458:7;1484:14;:4;:12;:14::i;246:22::-;;;-1:-1:-1;;;;;246:22:0;;:::o;8485:102:1:-;8571:9;-1:-1:-1;;;;;8571:9:1;;8485:102::o;4839:1564::-;4965:19;4974:4;4980:3;4965:8;:19::i;:::-;4944:104;;;;;;;-1:-1:-1;;;;;4944:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5075:1;5063:4;:9;;;:13;5059:1267;;;5156:9;;-1:-1:-1;;;;;5149:16:1;;;5156:9;;5149:16;5145:994;;;-1:-1:-1;;;;;5286:15:1;;;;;;;:10;;;:15;;;;;;:22;;;5274:34;;5286:22;;;-1:-1:-1;;;;;;5274:34:1;;;;;;;5393:9;;;5382:21;;;;:28;;:41;;;;;;;5145:994;;;5455:9;;;;-1:-1:-1;;;;;5448:16:1;;;5455:9;;5448:16;5444:695;;;-1:-1:-1;;;;;5589:15:1;;;;;;;:10;;;:15;;;;;;:22;;;;5577:9;;;:34;;5589:22;;;-1:-1:-1;;;;;;5577:34:1;;;;;;;;5696:9;;;5685:21;;;;:28;;;:41;;;;;;;5444:695;;;-1:-1:-1;;;;;5948:15:1;;;;;;;:10;;;:15;;;;;;:22;;;;;;5915;;;;;;;;5904:34;;;;;:41;;;:66;;5948:22;;;-1:-1:-1;;;;;;5904:66:1;;;;;;6102:22;;6069;;;;6058:34;;;;;;:41;:66;;6102:22;;;;6058:66;;;;;5444:695;5059:1267;;;6257:22;;-1:-1:-1;;;;;;6257:22:1;;;;;;6293:9;;:22;;;;;;;5059:1267;-1:-1:-1;;;;;6343:15:1;;;;;;:10;;;:15;;;;;6336:22;;;;;;;;;-1:-1:-1;;;;;;6336:22:1;;;;;;;;;;;;;;;;;;6380:9;;;;:16;;;:13;:16;:::i;:::-;6368:4;:9;;:28;;;;4839:1564;;:::o;6674:483::-;6854:19;6863:4;6869:3;6854:8;:19::i;:::-;6833:104;;;;;;;-1:-1:-1;;;;;6833:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:17;6992:4;6998:3;6985:6;:17::i;:::-;7027:1;7017:7;:11;7013:138;;;7096:44;7103:4;7109:3;7114:7;7123;7132;7096:6;:44::i;:::-;6674:483;;;;;:::o;2776:1974::-;2946:12;2953:4;2946:6;:12::i;:::-;2945:13;2924:90;;;;;-1:-1:-1;;;;;2924:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;3092:19;3101:4;3107:3;3092:8;:19::i;:::-;3091:20;3070:105;;;;;-1:-1:-1;;;;;3070:105:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3242:17:1;;;;3221:97;;;;;-1:-1:-1;;;;;3221:97:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3388:1;3381:8;;3360:87;;;;;-1:-1:-1;;;;;3360:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3475:7;3509;3532:47;3552:4;3558;3475:7;3509;3532:19;:47::i;:::-;3531:48;3527:270;;;3740:46;3759:4;3765;3771:6;3779;3740:18;:46::i;:::-;3721:65;;-1:-1:-1;3721:65:1;-1:-1:-1;3527:270:1;-1:-1:-1;;;;;3807:15:1;;;;;;;:10;;;:15;;;;;:26;;;3848:20;;;:44;;;;-1:-1:-1;;;;;;3872:20:1;;;3848:44;3844:861;;;3947:15;;-1:-1:-1;;;;;3947:15:1;;-1:-1:-1;;;;;;3947:15:1;;;;;;;;3976:9;;:15;;;;;;;;3844:861;;;-1:-1:-1;;;;;4012:20:1;;;4008:697;;;4123:9;;-1:-1:-1;;;;;4098:15:1;;;4123:9;4098:15;;;:10;;;:15;;;;;;4123:9;4098:22;:34;;4123:9;;;-1:-1:-1;;;;;;4098:34:1;;;;;;4157:9;;;;;4146:21;;;;;;:28;;:34;;;;;;;;4194:15;;;;;;;;4008:697;;;-1:-1:-1;;;;;4230:20:1;;;4226:479;;;4340:9;;;;;;-1:-1:-1;;;;;4315:15:1;;;4340:9;4315:15;;;:10;;;:15;;;;;;:22;;:34;;4340:9;;;-1:-1:-1;;;;;;4315:34:1;;;;;;4374:9;;;;;4363:21;;;;;;:28;;;:34;;;;;;;;4411:15;;;;;;;;4226:479;;;-1:-1:-1;;;;;4528:15:1;;;;;;;:10;;;:15;;;;;;:22;;;;:31;;;;;-1:-1:-1;;;;;;4528:31:1;;;;;;;;4573:22;;;;:31;;;;;;;;;;;;4618:18;;;;;;:25;;;:31;;;;;;;;4663:18;;;;:25;:31;;;;;;;;4226:479;4727:9;;;;:16;;4741:1;4727:16;:13;:16;:::i;:::-;4715:4;:9;;:28;;;;2776:1974;;;;;;;:::o;8683:101::-;8768:9;;;-1:-1:-1;;;;;8768:9:1;;8683:101::o;7273:209::-;-1:-1:-1;;;;;7452:15:1;7346:4;7452:15;;;:10;;;;;:15;;;;;:19;:23;;7273:209::o;8917:127::-;-1:-1:-1;;;;;9015:15:1;;;8989:7;9015:15;;;:10;;;:15;;;;;:22;;;;8917:127;;;;:::o;2252:282::-;2412:12;;;;2404:20;;2383:113;;;;;-1:-1:-1;;;;;2383:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:12;;;;:20;2252:282::o;8266:123::-;-1:-1:-1;;;;;8363:15:1;8337:7;8363:15;;;:10;;;;;:15;;;;;:19;;8266:123::o;9180:127::-;-1:-1:-1;;;;;9278:15:1;;;9252:7;9278:15;;;:10;;;:15;;;;;:22;;;;9180:127;;;;:::o;1349:467:3:-;1782:7;1770:20;1804:7;1349:467;:::o;7889:101:1:-;7974:9;;;;7889:101::o;1205:145:2:-;1263:7;1290:6;;;;1282:15;;;;;;-1:-1:-1;1319:5:2;;;1205:145::o;7542:113:1:-;7636:12;;;;7623:9;;;;;:25;;7542:113::o;9584:1030::-;9703:4;-1:-1:-1;;;;;9723:21:1;;;:46;;;;-1:-1:-1;;;;;;9748:21:1;;;9723:46;9719:889;;;9870:13;9878:4;9870:7;:13::i;:::-;9863:20;;;;9719:889;-1:-1:-1;;;;;9904:21:1;;;9900:708;;;10045:9;;-1:-1:-1;;;;;10045:20:1;;;:9;;:20;:55;;;;-1:-1:-1;;;;;;;10077:19:1;;;;;;:10;;;:19;;;;;:23;10069:31;;;10038:62;;9900:708;-1:-1:-1;;;;;10121:21:1;;;10117:491;;;10262:9;;;;-1:-1:-1;;;;;10262:20:1;;;:9;;:20;:55;;;;-1:-1:-1;;;;;;;10294:19:1;;;;;;:10;;;:19;;;;;:23;10286:31;;;10255:62;;10117:491;-1:-1:-1;;;;;10490:19:1;;;;;;;:10;;;:19;;;;;:26;;;;;:37;;;;:72;;;;-1:-1:-1;;;;;;10531:19:1;;;;;;:10;;;:19;;;;;:23;:31;-1:-1:-1;10531:31:1;10490:72;:107;;;;-1:-1:-1;;;;;;;10574:19:1;;;;;;:10;;;:19;;;;;:23;10566:31;;;10117:491;9584:1030;;;;;;:::o;12767:1387::-;12885:7;;12930;12964;-1:-1:-1;;;;;12986:20:1;;;12982:259;;13027:22;13036:4;13042:6;13027:8;:22::i;:::-;13026:23;:56;;;-1:-1:-1;;;;;;13060:18:1;;;;;;:10;;;:18;;;;;:22;13053:29;;13026:56;13022:209;;;13214:1;13197:19;;13022:209;-1:-1:-1;;;;;13255:20:1;;;13251:258;;13296:22;13305:4;13311:6;13296:8;:22::i;:::-;13295:23;:56;;;-1:-1:-1;;;;;;13329:18:1;;;;;;:10;;;:18;;;;;:22;13322:29;;13295:56;13291:208;;;-1:-1:-1;13482:1:1;13291:208;-1:-1:-1;;;;;13523:20:1;;;:44;;;;-1:-1:-1;;;;;;13547:20:1;;;13523:44;13519:629;;;13671:9;;13647:34;;13659:4;;13665;;-1:-1:-1;;;;;13671:9:1;13647:11;:34::i;:::-;13640:41;;;;;;;;13519:629;-1:-1:-1;;;;;13702:20:1;;;13698:450;;;13818:30;13829:4;13835;13841:6;13818:10;:30::i;13698:450::-;-1:-1:-1;;;;;13869:20:1;;;13865:283;;;13986:31;13998:4;14004;14010:6;13986:11;:31::i;13865:283::-;14106:31;14118:4;14124;14130:6;14106:11;:31::i;12767:1387::-;;;;;;;;:::o;1431:145:2:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:2:o;7716:103:1:-;7798:9;;;:14;;7716:103::o;10823:744::-;11036:9;;10918:7;;;;-1:-1:-1;;;;;11036:21:1;;;:9;;:21;:57;;;;-1:-1:-1;;;;;;11069:20:1;;;;;;:10;;;:20;;;;;:24;11061:32;;;11036:57;11032:117;;;-1:-1:-1;11125:1:1;;-1:-1:-1;11129:8:1;11109:29;;11032:117;-1:-1:-1;;;;;11211:18:1;;;11159:14;11211:18;;;:10;;;:18;;;;;:25;;;11176:8;;11211:25;11339:188;-1:-1:-1;;;;;11346:20:1;;;;;;:72;;;11371:47;11391:4;11397;11403:6;11411;11371:19;:47::i;:::-;11370:48;11346:72;11339:188;;;-1:-1:-1;;;;;;11443:18:1;;;;;;;:10;;;:18;;;;;;:25;;;;;;;11491:18;;;;;;;:25;;;;11443;;11491;11339:188;;;11545:6;;-1:-1:-1;11553:6:1;-1:-1:-1;10823:744:1;;;;;;;:::o;11776:741::-;11987:9;;;;11870:7;;;;-1:-1:-1;;;;;11987:21:1;;;:9;;:21;:57;;;;-1:-1:-1;;;;;;12020:20:1;;;;;;:10;;;:20;;;;;:24;12012:32;;;11987:57;11983:117;;;-1:-1:-1;12068:8:1;;-1:-1:-1;12086:1:1;12060:29;;11983:117;-1:-1:-1;;;;;12162:18:1;;;12110:14;12162:18;;;:10;;;:18;;;;;:25;;;12127:8;;12162:25;12289:188;-1:-1:-1;;;;;12296:20:1;;;;;;:72;;;12321:47;12341:4;12347;12353:6;12361;12321:19;:47::i;:::-;12320:48;12296:72;12289:188;;;-1:-1:-1;;;;;;12393:18:1;;;;;;;:10;;;:18;;;;;;:25;;;;;;;12441:18;;;;;;;:25;;;;12393;;12441;12289:188;;;12495:6;12503;;-1:-1:-1;11776:741:1;-1:-1:-1;;;;11776:741:1:o",
  "source": "pragma solidity 0.5.0;\n\nimport \"zos-lib/contracts/Initializable.sol\";\nimport \"./SortedDoublyLL.sol\";\n\n\ncontract PublicSortedDoublyLL is Initializable {\n    using SortedDoublyLL for SortedDoublyLL.Data;\n\n    SortedDoublyLL.Data internal list;\n    address public updater;\n\n    modifier onlyUpdater() {\n        require(\n            msg.sender == updater,\n            \"sender is not an updater\"\n        );\n        _;\n    }\n\n    function initialize(address _updater, uint256 _maxSize) public initializer {\n        updater = _updater;\n        list.setMaxSize(_maxSize);\n    }\n\n    function setUpdater(address _updater) public onlyUpdater {\n        updater = _updater;\n    }\n\n    function setMaxSize(uint256 _maxSize) public onlyUpdater {\n        list.setMaxSize(_maxSize);\n    }\n\n    function insert(\n        address _id,\n        uint256 _key,\n        address _prevId,\n        address _nextId\n    ) \n        public\n        onlyUpdater\n    {\n        list.insert(_id, _key, _prevId, _nextId);\n    }\n\n    function remove(address _id) public onlyUpdater {\n        list.remove(_id);\n    }\n\n    function updateKey(\n        address _id,\n        uint256 _newKey,\n        address _prevId,\n        address _nextId\n    )\n        public\n        onlyUpdater\n    {\n        list.updateKey(_id, _newKey, _prevId, _nextId);\n    }\n\n    function contains(address _id) public view returns (bool) {\n        return list.contains(_id);\n    }\n\n    function getSize() public view returns (uint256) {\n        return list.getSize();\n    }\n\n    function getMaxSize() public view returns (uint256) {\n        return list.maxSize;\n    }\n\n    function getKey(address _id) public view returns (uint256) {\n        return list.getKey(_id);\n    }\n\n    function getFirst() public view returns (address) {\n        return list.getFirst();\n    }\n\n    function getLast() public view returns (address) {\n        return list.getLast();\n    }\n\n    function getNext(address _id) public view returns (address) {\n        return list.getNext(_id);\n    }\n\n    function getPrev(address _id) public view returns (address) {\n        return list.getPrev(_id);\n    }\n}",
  "sourcePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/PublicSortedDoublyLL.sol",
  "ast": {
    "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/PublicSortedDoublyLL.sol",
    "exportedSymbols": {
      "PublicSortedDoublyLL": [
        222
      ]
    },
    "id": 223,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:22:0"
      },
      {
        "absolutePath": "zos-lib/contracts/Initializable.sol",
        "file": "zos-lib/contracts/Initializable.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 223,
        "sourceUnit": 1392,
        "src": "24:45:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/SortedDoublyLL.sol",
        "file": "./SortedDoublyLL.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 223,
        "sourceUnit": 1208,
        "src": "70:30:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1391,
              "src": "136:13:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$1391",
                "typeString": "contract Initializable"
              }
            },
            "id": 5,
            "nodeType": "InheritanceSpecifier",
            "src": "136:13:0"
          }
        ],
        "contractDependencies": [
          1391
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 222,
        "linearizedBaseContracts": [
          222,
          1391
        ],
        "name": "PublicSortedDoublyLL",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 8,
            "libraryName": {
              "contractScope": null,
              "id": 6,
              "name": "SortedDoublyLL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1207,
              "src": "162:14:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SortedDoublyLL_$1207",
                "typeString": "library SortedDoublyLL"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "156:45:0",
            "typeName": {
              "contractScope": null,
              "id": 7,
              "name": "SortedDoublyLL.Data",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 248,
              "src": "181:19:0",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                "typeString": "struct SortedDoublyLL.Data"
              }
            }
          },
          {
            "constant": false,
            "id": 10,
            "name": "list",
            "nodeType": "VariableDeclaration",
            "scope": 222,
            "src": "207:33:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Data_$248_storage",
              "typeString": "struct SortedDoublyLL.Data"
            },
            "typeName": {
              "contractScope": null,
              "id": 9,
              "name": "SortedDoublyLL.Data",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 248,
              "src": "207:19:0",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                "typeString": "struct SortedDoublyLL.Data"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 12,
            "name": "updater",
            "nodeType": "VariableDeclaration",
            "scope": 222,
            "src": "246:22:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 11,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "246:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23,
              "nodeType": "Block",
              "src": "298:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 15,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "329:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 16,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "329:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 17,
                          "name": "updater",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12,
                          "src": "343:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "329:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73656e646572206973206e6f7420616e2075706461746572",
                        "id": 19,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "364:26:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cda2dbc11289b577cd7a18e7d569c2c0974899e523a9240b9b5251ccc4231687",
                          "typeString": "literal_string \"sender is not an updater\""
                        },
                        "value": "sender is not an updater"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cda2dbc11289b577cd7a18e7d569c2c0974899e523a9240b9b5251ccc4231687",
                          "typeString": "literal_string \"sender is not an updater\""
                        }
                      ],
                      "id": 14,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "308:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "308:92:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21,
                  "nodeType": "ExpressionStatement",
                  "src": "308:92:0"
                },
                {
                  "id": 22,
                  "nodeType": "PlaceholderStatement",
                  "src": "410:1:0"
                }
              ]
            },
            "documentation": null,
            "id": 24,
            "name": "onlyUpdater",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "295:2:0"
            },
            "src": "275:143:0",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 43,
              "nodeType": "Block",
              "src": "499:70:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 33,
                      "name": "updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12,
                      "src": "509:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 34,
                      "name": "_updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "519:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "509:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "509:18:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 40,
                        "name": "_maxSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28,
                        "src": "553:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 37,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "537:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 39,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setMaxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 270,
                      "src": "537:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256)"
                      }
                    },
                    "id": 41,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "537:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42,
                  "nodeType": "ExpressionStatement",
                  "src": "537:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 44,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 31,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 30,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1372,
                  "src": "487:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "487:11:0"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 29,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26,
                  "name": "_updater",
                  "nodeType": "VariableDeclaration",
                  "scope": 44,
                  "src": "444:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "444:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28,
                  "name": "_maxSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 44,
                  "src": "462:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "462:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "443:36:0"
            },
            "returnParameters": {
              "id": 32,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "499:0:0"
            },
            "scope": 222,
            "src": "424:145:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 55,
              "nodeType": "Block",
              "src": "632:35:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 53,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 51,
                      "name": "updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12,
                      "src": "642:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 52,
                      "name": "_updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46,
                      "src": "652:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "642:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 54,
                  "nodeType": "ExpressionStatement",
                  "src": "642:18:0"
                }
              ]
            },
            "documentation": null,
            "id": 56,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 49,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 48,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "620:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "620:11:0"
              }
            ],
            "name": "setUpdater",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 47,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46,
                  "name": "_updater",
                  "nodeType": "VariableDeclaration",
                  "scope": 56,
                  "src": "595:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "595:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "594:18:0"
            },
            "returnParameters": {
              "id": 50,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "632:0:0"
            },
            "scope": 222,
            "src": "575:92:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 69,
              "nodeType": "Block",
              "src": "730:42:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 66,
                        "name": "_maxSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58,
                        "src": "756:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 63,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "740:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 65,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setMaxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 270,
                      "src": "740:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256)"
                      }
                    },
                    "id": 67,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "740:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 68,
                  "nodeType": "ExpressionStatement",
                  "src": "740:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 70,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 61,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 60,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "718:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "718:11:0"
              }
            ],
            "name": "setMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 59,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 58,
                  "name": "_maxSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 70,
                  "src": "693:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 57,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "693:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "692:18:0"
            },
            "returnParameters": {
              "id": 62,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "730:0:0"
            },
            "scope": 222,
            "src": "673:99:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 92,
              "nodeType": "Block",
              "src": "933:57:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 86,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 72,
                        "src": "955:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 87,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 74,
                        "src": "960:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 88,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 76,
                        "src": "966:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 89,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 78,
                        "src": "975:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 83,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "943:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 85,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 492,
                      "src": "943:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                      }
                    },
                    "id": 90,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "943:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 91,
                  "nodeType": "ExpressionStatement",
                  "src": "943:40:0"
                }
              ]
            },
            "documentation": null,
            "id": 93,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 81,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 80,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "917:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "917:11:0"
              }
            ],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 79,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 72,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "803:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 74,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "824:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 73,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "824:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 76,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "846:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 75,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "846:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 78,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "871:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 77,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "871:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "793:99:0"
            },
            "returnParameters": {
              "id": 82,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "933:0:0"
            },
            "scope": 222,
            "src": "778:212:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 106,
              "nodeType": "Block",
              "src": "1044:33:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 103,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "1066:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 100,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1054:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 102,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 638,
                      "src": "1054:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address)"
                      }
                    },
                    "id": 104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1054:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 105,
                  "nodeType": "ExpressionStatement",
                  "src": "1054:16:0"
                }
              ]
            },
            "documentation": null,
            "id": 107,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 98,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 97,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "1032:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1032:11:0"
              }
            ],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 96,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 95,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 107,
                  "src": "1012:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 94,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1011:13:0"
            },
            "returnParameters": {
              "id": 99,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1044:0:0"
            },
            "scope": 222,
            "src": "996:81:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 129,
              "nodeType": "Block",
              "src": "1243:63:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "1268:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 124,
                        "name": "_newKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "1273:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 125,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 113,
                        "src": "1282:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 126,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 115,
                        "src": "1291:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 120,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1253:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 678,
                      "src": "1253:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                      }
                    },
                    "id": 127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1253:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 128,
                  "nodeType": "ExpressionStatement",
                  "src": "1253:46:0"
                }
              ]
            },
            "documentation": null,
            "id": 130,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 118,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 117,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "1227:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1227:11:0"
              }
            ],
            "name": "updateKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 109,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1111:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 108,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1111:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 111,
                  "name": "_newKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1132:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 110,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1132:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 113,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1157:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 115,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1182:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 114,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1101:102:0"
            },
            "returnParameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1243:0:0"
            },
            "scope": 222,
            "src": "1083:223:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 142,
              "nodeType": "Block",
              "src": "1370:42:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 139,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 132,
                        "src": "1401:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 137,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1387:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 138,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 696,
                      "src": "1387:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                      }
                    },
                    "id": 140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1387:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 136,
                  "id": 141,
                  "nodeType": "Return",
                  "src": "1380:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 143,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 132,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 143,
                  "src": "1330:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1329:13:0"
            },
            "returnParameters": {
              "id": 136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 135,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 143,
                  "src": "1364:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 134,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:6:0"
            },
            "scope": 222,
            "src": "1312:100:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 152,
              "nodeType": "Block",
              "src": "1467:38:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 148,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1484:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 734,
                      "src": "1484:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1484:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 147,
                  "id": 151,
                  "nodeType": "Return",
                  "src": "1477:21:0"
                }
              ]
            },
            "documentation": null,
            "id": 153,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 144,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1434:2:0"
            },
            "returnParameters": {
              "id": 147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 146,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 153,
                  "src": "1458:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 145,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1457:9:0"
            },
            "scope": 222,
            "src": "1418:87:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 161,
              "nodeType": "Block",
              "src": "1563:36:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 158,
                      "name": "list",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10,
                      "src": "1580:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage",
                        "typeString": "struct SortedDoublyLL.Data storage ref"
                      }
                    },
                    "id": 159,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxSize",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 241,
                    "src": "1580:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 157,
                  "id": 160,
                  "nodeType": "Return",
                  "src": "1573:19:0"
                }
              ]
            },
            "documentation": null,
            "id": 162,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1530:2:0"
            },
            "returnParameters": {
              "id": 157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 156,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1554:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1554:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1553:9:0"
            },
            "scope": 222,
            "src": "1511:88:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 174,
              "nodeType": "Block",
              "src": "1664:40:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 171,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 164,
                        "src": "1693:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 169,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1681:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 761,
                      "src": "1681:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (uint256)"
                      }
                    },
                    "id": 172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1681:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 168,
                  "id": 173,
                  "nodeType": "Return",
                  "src": "1674:23:0"
                }
              ]
            },
            "documentation": null,
            "id": 175,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 164,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 175,
                  "src": "1621:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 163,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:13:0"
            },
            "returnParameters": {
              "id": 168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 167,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 175,
                  "src": "1655:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 166,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1654:9:0"
            },
            "scope": 222,
            "src": "1605:99:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 184,
              "nodeType": "Block",
              "src": "1760:39:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 180,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1777:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 181,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getFirst",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 772,
                      "src": "1777:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (address)"
                      }
                    },
                    "id": 182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1777:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 179,
                  "id": 183,
                  "nodeType": "Return",
                  "src": "1770:22:0"
                }
              ]
            },
            "documentation": null,
            "id": 185,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFirst",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1727:2:0"
            },
            "returnParameters": {
              "id": 179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 178,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1751:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 177,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1751:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1750:9:0"
            },
            "scope": 222,
            "src": "1710:89:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 194,
              "nodeType": "Block",
              "src": "1854:38:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 190,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1871:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLast",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 783,
                      "src": "1871:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (address)"
                      }
                    },
                    "id": 192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1871:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 189,
                  "id": 193,
                  "nodeType": "Return",
                  "src": "1864:21:0"
                }
              ]
            },
            "documentation": null,
            "id": 195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 186,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1821:2:0"
            },
            "returnParameters": {
              "id": 189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 188,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 195,
                  "src": "1845:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1845:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1844:9:0"
            },
            "scope": 222,
            "src": "1805:87:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 207,
              "nodeType": "Block",
              "src": "1958:41:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 204,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 197,
                        "src": "1988:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 202,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1975:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 203,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNext",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 799,
                      "src": "1975:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (address)"
                      }
                    },
                    "id": 205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1975:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 201,
                  "id": 206,
                  "nodeType": "Return",
                  "src": "1968:24:0"
                }
              ]
            },
            "documentation": null,
            "id": 208,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 197,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "1915:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 196,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1915:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1914:13:0"
            },
            "returnParameters": {
              "id": 201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 200,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "1949:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 199,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:9:0"
            },
            "scope": 222,
            "src": "1898:101:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 220,
              "nodeType": "Block",
              "src": "2065:41:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 210,
                        "src": "2095:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 215,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "2082:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 216,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPrev",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 815,
                      "src": "2082:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (address)"
                      }
                    },
                    "id": 218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2082:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 214,
                  "id": 219,
                  "nodeType": "Return",
                  "src": "2075:24:0"
                }
              ]
            },
            "documentation": null,
            "id": 221,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrev",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 210,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "2022:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2022:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2021:13:0"
            },
            "returnParameters": {
              "id": 214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 213,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "2056:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 212,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2055:9:0"
            },
            "scope": 222,
            "src": "2005:101:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 223,
        "src": "103:2005:0"
      }
    ],
    "src": "0:2108:0"
  },
  "legacyAST": {
    "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/PublicSortedDoublyLL.sol",
    "exportedSymbols": {
      "PublicSortedDoublyLL": [
        222
      ]
    },
    "id": 223,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:22:0"
      },
      {
        "absolutePath": "zos-lib/contracts/Initializable.sol",
        "file": "zos-lib/contracts/Initializable.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 223,
        "sourceUnit": 1392,
        "src": "24:45:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/SortedDoublyLL.sol",
        "file": "./SortedDoublyLL.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 223,
        "sourceUnit": 1208,
        "src": "70:30:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1391,
              "src": "136:13:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$1391",
                "typeString": "contract Initializable"
              }
            },
            "id": 5,
            "nodeType": "InheritanceSpecifier",
            "src": "136:13:0"
          }
        ],
        "contractDependencies": [
          1391
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 222,
        "linearizedBaseContracts": [
          222,
          1391
        ],
        "name": "PublicSortedDoublyLL",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 8,
            "libraryName": {
              "contractScope": null,
              "id": 6,
              "name": "SortedDoublyLL",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1207,
              "src": "162:14:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SortedDoublyLL_$1207",
                "typeString": "library SortedDoublyLL"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "156:45:0",
            "typeName": {
              "contractScope": null,
              "id": 7,
              "name": "SortedDoublyLL.Data",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 248,
              "src": "181:19:0",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                "typeString": "struct SortedDoublyLL.Data"
              }
            }
          },
          {
            "constant": false,
            "id": 10,
            "name": "list",
            "nodeType": "VariableDeclaration",
            "scope": 222,
            "src": "207:33:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Data_$248_storage",
              "typeString": "struct SortedDoublyLL.Data"
            },
            "typeName": {
              "contractScope": null,
              "id": 9,
              "name": "SortedDoublyLL.Data",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 248,
              "src": "207:19:0",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                "typeString": "struct SortedDoublyLL.Data"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 12,
            "name": "updater",
            "nodeType": "VariableDeclaration",
            "scope": 222,
            "src": "246:22:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 11,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "246:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23,
              "nodeType": "Block",
              "src": "298:120:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 18,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 15,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1406,
                            "src": "329:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 16,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "329:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 17,
                          "name": "updater",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12,
                          "src": "343:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "329:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73656e646572206973206e6f7420616e2075706461746572",
                        "id": 19,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "364:26:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cda2dbc11289b577cd7a18e7d569c2c0974899e523a9240b9b5251ccc4231687",
                          "typeString": "literal_string \"sender is not an updater\""
                        },
                        "value": "sender is not an updater"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cda2dbc11289b577cd7a18e7d569c2c0974899e523a9240b9b5251ccc4231687",
                          "typeString": "literal_string \"sender is not an updater\""
                        }
                      ],
                      "id": 14,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "308:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 20,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "308:92:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21,
                  "nodeType": "ExpressionStatement",
                  "src": "308:92:0"
                },
                {
                  "id": 22,
                  "nodeType": "PlaceholderStatement",
                  "src": "410:1:0"
                }
              ]
            },
            "documentation": null,
            "id": 24,
            "name": "onlyUpdater",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "295:2:0"
            },
            "src": "275:143:0",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 43,
              "nodeType": "Block",
              "src": "499:70:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 33,
                      "name": "updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12,
                      "src": "509:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 34,
                      "name": "_updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "519:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "509:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "509:18:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 40,
                        "name": "_maxSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28,
                        "src": "553:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 37,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "537:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 39,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setMaxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 270,
                      "src": "537:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256)"
                      }
                    },
                    "id": 41,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "537:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42,
                  "nodeType": "ExpressionStatement",
                  "src": "537:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 44,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 31,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 30,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1372,
                  "src": "487:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "487:11:0"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 29,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26,
                  "name": "_updater",
                  "nodeType": "VariableDeclaration",
                  "scope": 44,
                  "src": "444:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "444:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28,
                  "name": "_maxSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 44,
                  "src": "462:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "462:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "443:36:0"
            },
            "returnParameters": {
              "id": 32,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "499:0:0"
            },
            "scope": 222,
            "src": "424:145:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 55,
              "nodeType": "Block",
              "src": "632:35:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 53,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 51,
                      "name": "updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12,
                      "src": "642:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 52,
                      "name": "_updater",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46,
                      "src": "652:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "642:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 54,
                  "nodeType": "ExpressionStatement",
                  "src": "642:18:0"
                }
              ]
            },
            "documentation": null,
            "id": 56,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 49,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 48,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "620:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "620:11:0"
              }
            ],
            "name": "setUpdater",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 47,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 46,
                  "name": "_updater",
                  "nodeType": "VariableDeclaration",
                  "scope": 56,
                  "src": "595:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "595:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "594:18:0"
            },
            "returnParameters": {
              "id": 50,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "632:0:0"
            },
            "scope": 222,
            "src": "575:92:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 69,
              "nodeType": "Block",
              "src": "730:42:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 66,
                        "name": "_maxSize",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58,
                        "src": "756:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 63,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "740:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 65,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setMaxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 270,
                      "src": "740:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256)"
                      }
                    },
                    "id": 67,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "740:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 68,
                  "nodeType": "ExpressionStatement",
                  "src": "740:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 70,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 61,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 60,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "718:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "718:11:0"
              }
            ],
            "name": "setMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 59,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 58,
                  "name": "_maxSize",
                  "nodeType": "VariableDeclaration",
                  "scope": 70,
                  "src": "693:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 57,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "693:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "692:18:0"
            },
            "returnParameters": {
              "id": 62,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "730:0:0"
            },
            "scope": 222,
            "src": "673:99:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 92,
              "nodeType": "Block",
              "src": "933:57:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 86,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 72,
                        "src": "955:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 87,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 74,
                        "src": "960:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 88,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 76,
                        "src": "966:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 89,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 78,
                        "src": "975:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 83,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "943:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 85,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 492,
                      "src": "943:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                      }
                    },
                    "id": 90,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "943:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 91,
                  "nodeType": "ExpressionStatement",
                  "src": "943:40:0"
                }
              ]
            },
            "documentation": null,
            "id": 93,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 81,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 80,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "917:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "917:11:0"
              }
            ],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 79,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 72,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "803:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 74,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "824:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 73,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "824:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 76,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "846:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 75,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "846:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 78,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 93,
                  "src": "871:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 77,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "871:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "793:99:0"
            },
            "returnParameters": {
              "id": 82,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "933:0:0"
            },
            "scope": 222,
            "src": "778:212:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 106,
              "nodeType": "Block",
              "src": "1044:33:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 103,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "1066:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 100,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1054:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 102,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 638,
                      "src": "1054:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address)"
                      }
                    },
                    "id": 104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1054:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 105,
                  "nodeType": "ExpressionStatement",
                  "src": "1054:16:0"
                }
              ]
            },
            "documentation": null,
            "id": 107,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 98,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 97,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "1032:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1032:11:0"
              }
            ],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 96,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 95,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 107,
                  "src": "1012:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 94,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1011:13:0"
            },
            "returnParameters": {
              "id": 99,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1044:0:0"
            },
            "scope": 222,
            "src": "996:81:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 129,
              "nodeType": "Block",
              "src": "1243:63:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 109,
                        "src": "1268:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 124,
                        "name": "_newKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 111,
                        "src": "1273:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 125,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 113,
                        "src": "1282:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 126,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 115,
                        "src": "1291:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 120,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1253:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "updateKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 678,
                      "src": "1253:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                      }
                    },
                    "id": 127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1253:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 128,
                  "nodeType": "ExpressionStatement",
                  "src": "1253:46:0"
                }
              ]
            },
            "documentation": null,
            "id": 130,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 118,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 117,
                  "name": "onlyUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 24,
                  "src": "1227:11:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1227:11:0"
              }
            ],
            "name": "updateKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 109,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1111:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 108,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1111:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 111,
                  "name": "_newKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1132:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 110,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1132:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 113,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1157:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 115,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 130,
                  "src": "1182:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 114,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1101:102:0"
            },
            "returnParameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1243:0:0"
            },
            "scope": 222,
            "src": "1083:223:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 142,
              "nodeType": "Block",
              "src": "1370:42:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 139,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 132,
                        "src": "1401:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 137,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1387:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 138,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 696,
                      "src": "1387:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                      }
                    },
                    "id": 140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1387:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 136,
                  "id": 141,
                  "nodeType": "Return",
                  "src": "1380:25:0"
                }
              ]
            },
            "documentation": null,
            "id": 143,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 132,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 143,
                  "src": "1330:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1329:13:0"
            },
            "returnParameters": {
              "id": 136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 135,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 143,
                  "src": "1364:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 134,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:6:0"
            },
            "scope": 222,
            "src": "1312:100:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 152,
              "nodeType": "Block",
              "src": "1467:38:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 148,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1484:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 734,
                      "src": "1484:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1484:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 147,
                  "id": 151,
                  "nodeType": "Return",
                  "src": "1477:21:0"
                }
              ]
            },
            "documentation": null,
            "id": 153,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 144,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1434:2:0"
            },
            "returnParameters": {
              "id": 147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 146,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 153,
                  "src": "1458:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 145,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1458:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1457:9:0"
            },
            "scope": 222,
            "src": "1418:87:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 161,
              "nodeType": "Block",
              "src": "1563:36:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 158,
                      "name": "list",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10,
                      "src": "1580:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage",
                        "typeString": "struct SortedDoublyLL.Data storage ref"
                      }
                    },
                    "id": 159,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxSize",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 241,
                    "src": "1580:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 157,
                  "id": 160,
                  "nodeType": "Return",
                  "src": "1573:19:0"
                }
              ]
            },
            "documentation": null,
            "id": 162,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1530:2:0"
            },
            "returnParameters": {
              "id": 157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 156,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1554:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1554:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1553:9:0"
            },
            "scope": 222,
            "src": "1511:88:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 174,
              "nodeType": "Block",
              "src": "1664:40:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 171,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 164,
                        "src": "1693:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 169,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1681:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 761,
                      "src": "1681:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (uint256)"
                      }
                    },
                    "id": 172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1681:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 168,
                  "id": 173,
                  "nodeType": "Return",
                  "src": "1674:23:0"
                }
              ]
            },
            "documentation": null,
            "id": 175,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 164,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 175,
                  "src": "1621:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 163,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:13:0"
            },
            "returnParameters": {
              "id": 168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 167,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 175,
                  "src": "1655:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 166,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1654:9:0"
            },
            "scope": 222,
            "src": "1605:99:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 184,
              "nodeType": "Block",
              "src": "1760:39:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 180,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1777:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 181,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getFirst",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 772,
                      "src": "1777:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (address)"
                      }
                    },
                    "id": 182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1777:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 179,
                  "id": 183,
                  "nodeType": "Return",
                  "src": "1770:22:0"
                }
              ]
            },
            "documentation": null,
            "id": 185,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFirst",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1727:2:0"
            },
            "returnParameters": {
              "id": 179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 178,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1751:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 177,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1751:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1750:9:0"
            },
            "scope": 222,
            "src": "1710:89:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 194,
              "nodeType": "Block",
              "src": "1854:38:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 190,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1871:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLast",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 783,
                      "src": "1871:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (address)"
                      }
                    },
                    "id": 192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1871:14:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 189,
                  "id": 193,
                  "nodeType": "Return",
                  "src": "1864:21:0"
                }
              ]
            },
            "documentation": null,
            "id": 195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 186,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1821:2:0"
            },
            "returnParameters": {
              "id": 189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 188,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 195,
                  "src": "1845:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1845:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1844:9:0"
            },
            "scope": 222,
            "src": "1805:87:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 207,
              "nodeType": "Block",
              "src": "1958:41:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 204,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 197,
                        "src": "1988:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 202,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1975:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 203,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNext",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 799,
                      "src": "1975:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (address)"
                      }
                    },
                    "id": 205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1975:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 201,
                  "id": 206,
                  "nodeType": "Return",
                  "src": "1968:24:0"
                }
              ]
            },
            "documentation": null,
            "id": 208,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 197,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "1915:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 196,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1915:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1914:13:0"
            },
            "returnParameters": {
              "id": 201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 200,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 208,
                  "src": "1949:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 199,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:9:0"
            },
            "scope": 222,
            "src": "1898:101:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 220,
              "nodeType": "Block",
              "src": "2065:41:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 210,
                        "src": "2095:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 215,
                        "name": "list",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "2082:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage",
                          "typeString": "struct SortedDoublyLL.Data storage ref"
                        }
                      },
                      "id": 216,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPrev",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 815,
                      "src": "2082:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_address_$bound_to$_t_struct$_Data_$248_storage_ptr_$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (address)"
                      }
                    },
                    "id": 218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2082:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 214,
                  "id": 219,
                  "nodeType": "Return",
                  "src": "2075:24:0"
                }
              ]
            },
            "documentation": null,
            "id": 221,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrev",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 210,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "2022:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2022:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2021:13:0"
            },
            "returnParameters": {
              "id": 214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 213,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "2056:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 212,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2055:9:0"
            },
            "scope": 222,
            "src": "2005:101:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 223,
        "src": "103:2005:0"
      }
    ],
    "src": "0:2108:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-02-02T18:01:12.583Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}