{
  "contractName": "ScheduleRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"UpdatedTerms\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getAddressValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getBytes32ValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getContractReferenceValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getCycleValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getEventAtIndex\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextUnderlyingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getPeriodValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getScheduleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"isEventSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"_payoff\",\"type\":\"int256\"}],\"name\":\"markEventAsSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pendingEvent\",\"type\":\"bytes32\"}],\"name\":\"pushPendingEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getEventAtIndex(bytes32,uint256)\":{\"params\":{\"assetId\":\"id of the asset\",\"index\":\"index of the event to return\"},\"returns\":{\"_0\":\"Event\"}},\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getNextScheduleIndex(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Index\"}},\"getNextScheduledEvent(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"event\"}},\"getSchedule(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"the schedule\"}},\"getScheduleLength(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Length of the schedule\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"isEventSettled(bytes32,bytes32)\":{\"params\":{\"_event\":\"event (encoded)\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if event was settled\"}},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"_event\":\"event (encoded) to be marked as settled\",\"assetId\":\"id of the asset\"}},\"popNextScheduledEvent(bytes32)\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\"}},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}}},\"title\":\"ScheduleRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"getEventAtIndex(bytes32,uint256)\":{\"notice\":\"Returns an event for a given position (index) in a schedule of a given asset.\"},\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getNextScheduleIndex(bytes32)\":{\"notice\":\"Returns the index of the next event to be processed for a schedule of an asset.\"},\"getNextScheduledEvent(bytes32)\":{\"notice\":\"Returns the next event to process.\"},\"getNextUnderlyingEvent(bytes32)\":{\"notice\":\"If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event.\"},\"getSchedule(bytes32)\":{\"notice\":\"Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\"},\"getScheduleLength(bytes32)\":{\"notice\":\"Returns the length of a schedule of a given asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"isEventSettled(bytes32,bytes32)\":{\"notice\":\"Returns true if an event of an assets schedule was settled\"},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"notice\":\"Mark an event as settled\"},\"popNextScheduledEvent(bytes32)\":{\"notice\":\"Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":\"ScheduleRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":{\"keccak256\":\"0x5a377f9877c1748cf2e6ee158306f204e5d740e82ad2aa3b3ca680258edc8c36\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ad876b340f89357f3baf8dae0bfecd3758323f93019d1b4543da387f720c2f73\",\"dweb:/ipfs/QmQyDtzUtGgEz3JXnpU8qdg6tHAP3KWAfwgY6Y2Z8RytJo\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol\":{\"keccak256\":\"0xbb72fb674b59a69ddfbbbae6646779d9a9e45d5f6ce058090cea73898c6144f3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://002359bb2412c5dfe0172701869a9014dfd8c5210b22f5cb7cd70e615cbe1b78\",\"dweb:/ipfs/QmPATHyGY8MhzKH96o37EWQx7n99C5kXgV4xyHt64szxPX\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\";\n\nimport \"../BaseRegistryStorage.sol\";\nimport \"../IBaseRegistry.sol\";\nimport \"../AccessControl/AccessControl.sol\";\nimport \"../Terms/TermsRegistry.sol\";\nimport \"../Terms/ITermsRegistry.sol\";\nimport \"../State/StateRegistry.sol\";\nimport \"../State/IStateRegistry.sol\";\nimport \"./IScheduleRegistry.sol\";\n\n\n/**\n * @title ScheduleRegistry\n */\nabstract contract ScheduleRegistry is\n    BaseRegistryStorage,\n    AccessControl,\n    TermsRegistry,\n    StateRegistry,\n    IScheduleRegistry,\n    EventUtils,\n    PeriodUtils\n{\n    /**\n     * @notice Returns an event for a given position (index) in a schedule of a given asset.\n     * @param assetId id of the asset\n     * @param index index of the event to return\n     * @return Event\n     */\n    function getEventAtIndex(bytes32 assetId, uint256 index)\n        external\n        view\n        override\n        returns (bytes32)\n    {\n        return assets[assetId].schedule.events[index];\n    }\n\n\n    /**\n     * @notice Returns the length of a schedule of a given asset.\n     * @param assetId id of the asset\n     * @return Length of the schedule\n     */\n    function getScheduleLength(bytes32 assetId)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        return assets[assetId].schedule.length;\n    }\n\n    /**\n     * @notice Convenience method for retrieving the entire schedule\n     * Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\n     * @param assetId id of the asset\n     * @return the schedule\n     */\n    function getSchedule(bytes32 assetId)\n        external\n        view\n        override\n        returns (bytes32[] memory)\n    {\n        return assets[assetId].decodeAndGetSchedule();\n    }\n\n    function getPendingEvent(bytes32 assetId)\n        external\n        view\n        override\n        returns (bytes32)\n    {\n        return assets[assetId].schedule.pendingEvent;\n    }\n\n    function pushPendingEvent(bytes32 assetId, bytes32 pendingEvent)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].schedule.pendingEvent = pendingEvent;\n    }\n\n    function popPendingEvent(bytes32 assetId)\n        external\n        override\n        isAuthorized (assetId)\n        returns (bytes32)\n    {\n        bytes32 pendingEvent = assets[assetId].schedule.pendingEvent;\n        assets[assetId].schedule.pendingEvent = bytes32(0);\n\n        return pendingEvent;\n    }\n\n    /**\n     * @notice Returns the index of the next event to be processed for a schedule of an asset.\n     * @param assetId id of the asset\n     * @return Index\n     */\n    function getNextScheduleIndex(bytes32 assetId)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        return assets[assetId].schedule.nextScheduleIndex;\n    }\n\n    /**\n     * @notice If the underlying of the asset changes in performance to a covered performance,\n     * it returns the exerciseDate event.\n     */\n    function getNextUnderlyingEvent(bytes32 assetId)\n        external\n        view\n        override\n        returns (bytes32)\n    {\n        ContractReference memory contractReference_1 = getContractReferenceValueForTermsAttribute(assetId, \"contractReference_1\");\n\n        // check for COVE\n        if (contractReference_1.object != bytes32(0) && contractReference_1.role == ContractReferenceRole.COVE) {\n            bytes32 underlyingAssetId = contractReference_1.object;\n            address underlyingRegistry = address(uint160(uint256(contractReference_1.object2))); // workaround for solc bug (replace with bytes)\n\n            require(\n                IBaseRegistry(underlyingRegistry).isRegistered(underlyingAssetId),\n                \"AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST\"\n            );\n\n            uint256 exerciseDate = getUintValueForStateAttribute(assetId, \"exerciseDate\");\n            ContractPerformance creditEventTypeCovered = ContractPerformance(getEnumValueForTermsAttribute(assetId, \"creditEventTypeCovered\"));\n            ContractPerformance underlyingContractPerformance = ContractPerformance(IStateRegistry(underlyingRegistry).getEnumValueForStateAttribute(underlyingAssetId, \"contractPerformance\"));\n            uint256 underlyingNonPerformingDate = IStateRegistry(underlyingRegistry).getUintValueForStateAttribute(underlyingAssetId, \"nonPerformingDate\");\n\n            // check if exerciseDate has been triggered\n            if (exerciseDate > 0) {\n                // insert SettlementDate event\n                return encodeEvent(\n                    EventType.STD,\n                    // solium-disable-next-line\n                    block.timestamp\n                );\n            }\n            // if not check if performance of underlying asset is covered by this asset (PF excluded)\n            if (\n                creditEventTypeCovered != ContractPerformance.PF\n                && underlyingContractPerformance == creditEventTypeCovered\n            ) {\n                // insert exerciseDate event\n                // derive scheduleTimeOffset from performance\n                if (underlyingContractPerformance == ContractPerformance.DL) {\n                    return encodeEvent(\n                        EventType.XD,\n                        underlyingNonPerformingDate\n                    );\n                } else if (underlyingContractPerformance == ContractPerformance.DQ) {\n                    IP memory underlyingGracePeriod = ITermsRegistry(underlyingRegistry).getPeriodValueForTermsAttribute(underlyingAssetId, \"gracePeriod\");\n                    return encodeEvent(\n                        EventType.XD,\n                        getTimestampPlusPeriod(underlyingGracePeriod, underlyingNonPerformingDate)\n                    );\n                } else if (underlyingContractPerformance == ContractPerformance.DF) {\n                    IP memory underlyingDelinquencyPeriod = ITermsRegistry(underlyingRegistry).getPeriodValueForTermsAttribute(underlyingAssetId, \"delinquencyPeriod\");\n                    return encodeEvent(\n                        EventType.XD,\n                        getTimestampPlusPeriod(underlyingDelinquencyPeriod, underlyingNonPerformingDate)\n                    );\n                }\n            }\n        }\n\n        return bytes32(0);\n    }\n\n    /**\n     * @notice Returns the next event to process.\n     * @param assetId id of the asset\n     * @return event\n     */\n    function getNextScheduledEvent(bytes32 assetId)\n        external\n        view\n        override\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        bytes32 nextCyclicEvent = getNextCyclicEvent(assetId);\n        bytes32 nextScheduleEvent = asset.schedule.events[asset.schedule.nextScheduleIndex];\n\n        if (asset.schedule.length == 0 && nextCyclicEvent == bytes32(0)) return bytes32(0);\n\n        (EventType eventTypeNextCyclicEvent, uint256 scheduleTimeNextCyclicEvent) = decodeEvent(nextCyclicEvent);\n        (EventType eventTypeNextScheduleEvent, uint256 scheduleTimeNextScheduleEvent) = decodeEvent(nextScheduleEvent);\n\n        if (\n            (scheduleTimeNextScheduleEvent == 0 || (scheduleTimeNextCyclicEvent != 0 && scheduleTimeNextCyclicEvent < scheduleTimeNextScheduleEvent))\n            || (\n                scheduleTimeNextCyclicEvent == scheduleTimeNextScheduleEvent\n                && getEpochOffset(eventTypeNextCyclicEvent) < getEpochOffset(eventTypeNextScheduleEvent)\n            )\n        ) {\n            return nextCyclicEvent;\n        } else {\n            return nextScheduleEvent;\n        }\n    }\n\n    /**\n     * @notice Increments the index of a schedule of an asset.\n     * (if max index is reached the index will be left unchanged)\n     * @dev Can only be updated by the assets actor or by an authorized account.\n     * @param assetId id of the asset\n     */\n    function popNextScheduledEvent(bytes32 assetId)\n        external\n        override\n        isAuthorized (assetId)\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        bytes32 nextCyclicEvent = getNextCyclicEvent(assetId);\n        bytes32 nextScheduleEvent = asset.schedule.events[asset.schedule.nextScheduleIndex];\n\n        if (asset.schedule.length == 0 && nextCyclicEvent == bytes32(0)) return bytes32(0);\n\n        (EventType eventTypeNextCyclicEvent, uint256 scheduleTimeNextCyclicEvent) = decodeEvent(nextCyclicEvent);\n        (EventType eventTypeNextScheduleEvent, uint256 scheduleTimeNextScheduleEvent) = decodeEvent(nextScheduleEvent);\n\n        // update both next cyclic event and next schedule event if they are the same\n        if (nextCyclicEvent == nextScheduleEvent) {\n            asset.schedule.lastScheduleTimeOfCyclicEvent[eventTypeNextCyclicEvent] = scheduleTimeNextCyclicEvent;\n            if (asset.schedule.nextScheduleIndex == asset.schedule.length) return bytes32(0);\n            asset.schedule.nextScheduleIndex += 1;\n            // does matter since they are the same\n            return nextCyclicEvent;\n        }\n\n        // next cyclic event occurs earlier than next schedule event\n        if (\n            (scheduleTimeNextScheduleEvent == 0 || (scheduleTimeNextCyclicEvent != 0 && scheduleTimeNextCyclicEvent < scheduleTimeNextScheduleEvent))\n            || (\n                scheduleTimeNextCyclicEvent == scheduleTimeNextScheduleEvent\n                && getEpochOffset(eventTypeNextCyclicEvent) < getEpochOffset(eventTypeNextScheduleEvent)\n            )\n        ) {\n            asset.schedule.lastScheduleTimeOfCyclicEvent[eventTypeNextCyclicEvent] = scheduleTimeNextCyclicEvent;\n            return nextCyclicEvent;\n        } else {\n            if (scheduleTimeNextScheduleEvent == 0 || asset.schedule.nextScheduleIndex == asset.schedule.length) {\n                return bytes32(0);\n            }\n            asset.schedule.nextScheduleIndex += 1;\n            return nextScheduleEvent;\n        }\n    }\n\n    /**\n     * @notice Returns true if an event of an assets schedule was settled\n     * @param assetId id of the asset\n     * @param _event event (encoded)\n     * @return true if event was settled\n     */\n    function isEventSettled(bytes32 assetId, bytes32 _event)\n        external\n        view\n        override\n        returns (bool, int256)\n    {\n        return (\n            assets[assetId].settlement[_event].isSettled,\n            assets[assetId].settlement[_event].payoff\n        );\n    }\n\n    /**\n     * @notice Mark an event as settled\n     * @dev Can only be set by authorized account.\n     * @param assetId id of the asset\n     * @param _event event (encoded) to be marked as settled\n     */\n    function markEventAsSettled(bytes32 assetId, bytes32 _event, int256 _payoff)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].settlement[_event] = Settlement({ isSettled: true, payoff: _payoff });\n    }\n\n    // function decodeEvent(bytes32 _event)\n    //     internal\n    //     pure\n    //     returns (EventType, uint256)\n    // {\n    //     EventType eventType = EventType(uint8(uint256(_event >> 248)));\n    //     uint256 scheduleTime = uint256(uint64(uint256(_event)));\n\n    //     return (eventType, scheduleTime);\n    // }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol",
    "exportedSymbols": {
      "ScheduleRegistry": [
        5716
      ]
    },
    "id": 5717,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5032,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:16"
      },
      {
        "id": 5033,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:16"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 5034,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 24759,
        "src": "101:67:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "id": 5035,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 24886,
        "src": "169:68:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
        "file": "../BaseRegistryStorage.sol",
        "id": 5036,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4479,
        "src": "239:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol",
        "file": "../IBaseRegistry.sol",
        "id": 5037,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4540,
        "src": "276:30:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol",
        "file": "../AccessControl/AccessControl.sol",
        "id": 5038,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4084,
        "src": "307:44:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol",
        "file": "../Terms/TermsRegistry.sol",
        "id": 5039,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6983,
        "src": "352:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol",
        "file": "../Terms/ITermsRegistry.sol",
        "id": 5040,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6895,
        "src": "389:37:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol",
        "file": "../State/StateRegistry.sol",
        "id": 5041,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6818,
        "src": "427:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol",
        "file": "../State/IStateRegistry.sol",
        "id": 5042,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 5777,
        "src": "464:37:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol",
        "file": "./IScheduleRegistry.sol",
        "id": 5043,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4925,
        "src": "502:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5045,
              "name": "BaseRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4478,
              "src": "615:19:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistryStorage_$4478",
                "typeString": "contract BaseRegistryStorage"
              }
            },
            "id": 5046,
            "nodeType": "InheritanceSpecifier",
            "src": "615:19:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5047,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4083,
              "src": "640:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$4083",
                "typeString": "contract AccessControl"
              }
            },
            "id": 5048,
            "nodeType": "InheritanceSpecifier",
            "src": "640:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5049,
              "name": "TermsRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6982,
              "src": "659:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                "typeString": "contract TermsRegistry"
              }
            },
            "id": 5050,
            "nodeType": "InheritanceSpecifier",
            "src": "659:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5051,
              "name": "StateRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6817,
              "src": "678:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StateRegistry_$6817",
                "typeString": "contract StateRegistry"
              }
            },
            "id": 5052,
            "nodeType": "InheritanceSpecifier",
            "src": "678:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5053,
              "name": "IScheduleRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4924,
              "src": "697:17:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IScheduleRegistry_$4924",
                "typeString": "contract IScheduleRegistry"
              }
            },
            "id": 5054,
            "nodeType": "InheritanceSpecifier",
            "src": "697:17:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5055,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "720:10:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 5056,
            "nodeType": "InheritanceSpecifier",
            "src": "720:10:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5057,
              "name": "PeriodUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24885,
              "src": "736:11:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PeriodUtils_$24885",
                "typeString": "contract PeriodUtils"
              }
            },
            "id": 5058,
            "nodeType": "InheritanceSpecifier",
            "src": "736:11:16"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4478,
          4924,
          5776,
          6817,
          6982,
          24758,
          24885
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 5044,
          "nodeType": "StructuredDocumentation",
          "src": "538:34:16",
          "text": " @title ScheduleRegistry"
        },
        "fullyImplemented": false,
        "id": 5716,
        "linearizedBaseContracts": [
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6982,
          4083,
          4125,
          4478
        ],
        "name": "ScheduleRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              4867
            ],
            "body": {
              "id": 5077,
              "nodeType": "Block",
              "src": "1105:62:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5069,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "1122:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5071,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5070,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5061,
                            "src": "1129:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1122:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5072,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "1122:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5073,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "1122:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5075,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5074,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5063,
                      "src": "1154:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1122:38:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5068,
                  "id": 5076,
                  "nodeType": "Return",
                  "src": "1115:45:16"
                }
              ]
            },
            "documentation": {
              "id": 5059,
              "nodeType": "StructuredDocumentation",
              "src": "754:212:16",
              "text": " @notice Returns an event for a given position (index) in a schedule of a given asset.\n @param assetId id of the asset\n @param index index of the event to return\n @return Event"
            },
            "functionSelector": "b02ca0c0",
            "id": 5078,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventAtIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5065,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1066:8:16"
            },
            "parameters": {
              "id": 5064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5061,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "996:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "996:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5063,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "1013:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "995:32:16"
            },
            "returnParameters": {
              "id": 5068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5067,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "1092:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:9:16"
            },
            "scope": 5716,
            "src": "971:196:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4874
            ],
            "body": {
              "id": 5093,
              "nodeType": "Block",
              "src": "1453:55:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5087,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1470:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5089,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5088,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5081,
                          "src": "1477:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1470:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "1470:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5091,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7859,
                    "src": "1470:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5086,
                  "id": 5092,
                  "nodeType": "Return",
                  "src": "1463:38:16"
                }
              ]
            },
            "documentation": {
              "id": 5079,
              "nodeType": "StructuredDocumentation",
              "src": "1174:153:16",
              "text": " @notice Returns the length of a schedule of a given asset.\n @param assetId id of the asset\n @return Length of the schedule"
            },
            "functionSelector": "a17b75b5",
            "id": 5094,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getScheduleLength",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5083,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1414:8:16"
            },
            "parameters": {
              "id": 5082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5081,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5094,
                  "src": "1359:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1359:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1358:17:16"
            },
            "returnParameters": {
              "id": 5086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5085,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5094,
                  "src": "1440:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5084,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1440:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1439:9:16"
            },
            "scope": 5716,
            "src": "1332:176:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4882
            ],
            "body": {
              "id": 5110,
              "nodeType": "Block",
              "src": "1891:62:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5104,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1908:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5105,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5097,
                          "src": "1915:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1908:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetSchedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5029,
                      "src": "1908:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 5108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1908:38:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 5103,
                  "id": 5109,
                  "nodeType": "Return",
                  "src": "1901:45:16"
                }
              ]
            },
            "documentation": {
              "id": 5095,
              "nodeType": "StructuredDocumentation",
              "src": "1514:248:16",
              "text": " @notice Convenience method for retrieving the entire schedule\n Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\n @param assetId id of the asset\n @return the schedule"
            },
            "functionSelector": "3adc277a",
            "id": 5111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSchedule",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5099,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1843:8:16"
            },
            "parameters": {
              "id": 5098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5097,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5111,
                  "src": "1788:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5096,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1787:17:16"
            },
            "returnParameters": {
              "id": 5103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5102,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5111,
                  "src": "1869:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5100,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1869:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 5101,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1869:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1868:18:16"
            },
            "scope": 5716,
            "src": "1767:186:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4837
            ],
            "body": {
              "id": 5125,
              "nodeType": "Block",
              "src": "2078:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5119,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2095:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5121,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5120,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5113,
                          "src": "2102:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2095:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5122,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2095:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5123,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pendingEvent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7863,
                    "src": "2095:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5118,
                  "id": 5124,
                  "nodeType": "Return",
                  "src": "2088:44:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "f52f84e1",
            "id": 5126,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5115,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2039:8:16"
            },
            "parameters": {
              "id": 5114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5113,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5126,
                  "src": "1984:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5112,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1984:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1983:17:16"
            },
            "returnParameters": {
              "id": 5118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5126,
                  "src": "2065:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2065:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2064:9:16"
            },
            "scope": 5716,
            "src": "1959:180:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4844
            ],
            "body": {
              "id": 5145,
              "nodeType": "Block",
              "src": "2279:69:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5137,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "2289:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5139,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5138,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5128,
                            "src": "2296:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2289:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5140,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "2289:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5141,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7863,
                      "src": "2289:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5142,
                      "name": "pendingEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5130,
                      "src": "2329:12:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2289:52:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5144,
                  "nodeType": "ExpressionStatement",
                  "src": "2289:52:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d981e773",
            "id": 5146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5134,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5128,
                    "src": "2266:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5135,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5133,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2252:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2252:22:16"
              }
            ],
            "name": "pushPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2235:8:16"
            },
            "parameters": {
              "id": 5131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5128,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5146,
                  "src": "2171:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5127,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2171:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5130,
                  "mutability": "mutable",
                  "name": "pendingEvent",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5146,
                  "src": "2188:20:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5129,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2170:39:16"
            },
            "returnParameters": {
              "id": 5136,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2279:0:16"
            },
            "scope": 5716,
            "src": "2145:203:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4851
            ],
            "body": {
              "id": 5178,
              "nodeType": "Block",
              "src": "2491:167:16",
              "statements": [
                {
                  "assignments": [
                    5158
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5158,
                      "mutability": "mutable",
                      "name": "pendingEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5178,
                      "src": "2501:20:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5157,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2501:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5164,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5159,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2524:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5161,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5160,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5148,
                          "src": "2531:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2524:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5162,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2524:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5163,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pendingEvent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7863,
                    "src": "2524:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2501:60:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5165,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "2571:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5167,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5166,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5148,
                            "src": "2578:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2571:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5168,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "2571:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5169,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7863,
                      "src": "2571:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2619:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2611:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5170,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2611:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2611:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2571:50:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5175,
                  "nodeType": "ExpressionStatement",
                  "src": "2571:50:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5176,
                    "name": "pendingEvent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5158,
                    "src": "2639:12:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5156,
                  "id": 5177,
                  "nodeType": "Return",
                  "src": "2632:19:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0c5b75a4",
            "id": 5179,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5152,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5148,
                    "src": "2452:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5153,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5151,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2438:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2438:22:16"
              }
            ],
            "name": "popPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5150,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2421:8:16"
            },
            "parameters": {
              "id": 5149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5148,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5179,
                  "src": "2379:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5147,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2378:17:16"
            },
            "returnParameters": {
              "id": 5156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5155,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5179,
                  "src": "2478:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5154,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2477:9:16"
            },
            "scope": 5716,
            "src": "2354:304:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4889
            ],
            "body": {
              "id": 5194,
              "nodeType": "Block",
              "src": "2958:66:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5188,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2975:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5190,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5189,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5182,
                          "src": "2982:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2975:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2975:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5192,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextScheduleIndex",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7861,
                    "src": "2975:42:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5187,
                  "id": 5193,
                  "nodeType": "Return",
                  "src": "2968:49:16"
                }
              ]
            },
            "documentation": {
              "id": 5180,
              "nodeType": "StructuredDocumentation",
              "src": "2664:165:16",
              "text": " @notice Returns the index of the next event to be processed for a schedule of an asset.\n @param assetId id of the asset\n @return Index"
            },
            "functionSelector": "28e0f8a9",
            "id": 5195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextScheduleIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5184,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2919:8:16"
            },
            "parameters": {
              "id": 5183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5182,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5195,
                  "src": "2864:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2864:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2863:17:16"
            },
            "returnParameters": {
              "id": 5187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5186,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5195,
                  "src": "2945:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5185,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2945:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2944:9:16"
            },
            "scope": 5716,
            "src": "2834:190:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4858
            ],
            "body": {
              "id": 5382,
              "nodeType": "Block",
              "src": "3309:3196:16",
              "statements": [
                {
                  "assignments": [
                    5205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5205,
                      "mutability": "mutable",
                      "name": "contractReference_1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5382,
                      "src": "3319:44:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                        "typeString": "struct ContractReference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5204,
                        "name": "ContractReference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22632,
                        "src": "3319:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                          "typeString": "struct ContractReference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5210,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5207,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5198,
                        "src": "3409:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e74726163745265666572656e63655f31",
                        "id": 5208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3418:21:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                          "typeString": "literal_string \"contractReference_1\""
                        },
                        "value": "contractReference_1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                          "typeString": "literal_string \"contractReference_1\""
                        }
                      ],
                      "id": 5206,
                      "name": "getContractReferenceValueForTermsAttribute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6974,
                      "src": "3366:42:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 5209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3366:74:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3319:121:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5211,
                          "name": "contractReference_1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "3481:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                            "typeString": "struct ContractReference memory"
                          }
                        },
                        "id": 5212,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "object",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22625,
                        "src": "3481:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3519:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3511:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5213,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3511:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3511:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "3481:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      },
                      "id": 5222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5218,
                          "name": "contractReference_1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "3525:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                            "typeString": "struct ContractReference memory"
                          }
                        },
                        "id": 5219,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "role",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22631,
                        "src": "3525:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                          "typeString": "enum ContractReferenceRole"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5220,
                          "name": "ContractReferenceRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22525,
                          "src": "3553:21:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                            "typeString": "type(enum ContractReferenceRole)"
                          }
                        },
                        "id": 5221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "COVE",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3553:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                          "typeString": "enum ContractReferenceRole"
                        }
                      },
                      "src": "3525:54:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3481:98:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5376,
                  "nodeType": "IfStatement",
                  "src": "3477:2994:16",
                  "trueBody": {
                    "id": 5375,
                    "nodeType": "Block",
                    "src": "3581:2890:16",
                    "statements": [
                      {
                        "assignments": [
                          5225
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5225,
                            "mutability": "mutable",
                            "name": "underlyingAssetId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "3595:25:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5224,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3595:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5228,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5226,
                            "name": "contractReference_1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5205,
                            "src": "3623:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                              "typeString": "struct ContractReference memory"
                            }
                          },
                          "id": 5227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "object",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22625,
                          "src": "3623:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3595:54:16"
                      },
                      {
                        "assignments": [
                          5230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5230,
                            "mutability": "mutable",
                            "name": "underlyingRegistry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "3663:26:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5229,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3663:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5242,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5237,
                                        "name": "contractReference_1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5205,
                                        "src": "3716:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                          "typeString": "struct ContractReference memory"
                                        }
                                      },
                                      "id": 5238,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "object2",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22627,
                                      "src": "3716:27:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 5236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3708:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 5235,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3708:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3708:36:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3700:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 5233,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3700:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3700:45:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 5232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3692:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5231,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3692:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 5241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3692:54:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3663:83:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5248,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5225,
                                  "src": "3881:17:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5245,
                                      "name": "underlyingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5230,
                                      "src": "3848:18:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5244,
                                    "name": "IBaseRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4539,
                                    "src": "3834:13:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IBaseRegistry_$4539_$",
                                      "typeString": "type(contract IBaseRegistry)"
                                    }
                                  },
                                  "id": 5246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3834:33:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBaseRegistry_$4539",
                                    "typeString": "contract IBaseRegistry"
                                  }
                                },
                                "id": 5247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isRegistered",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4510,
                                "src": "3834:46:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (bytes32) view external returns (bool)"
                                }
                              },
                              "id": 5249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3834:65:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "41737365744163746f722e6765744e657874556e6465726c79696e674576656e743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f4558495354",
                              "id": 5250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3917:68:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f072f272c22749e8bacbe86b02b94f35bdbe812ff36a32ab08daa6ec8f5df7c2",
                                "typeString": "literal_string \"AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST\""
                              },
                              "value": "AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f072f272c22749e8bacbe86b02b94f35bdbe812ff36a32ab08daa6ec8f5df7c2",
                                "typeString": "literal_string \"AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST\""
                              }
                            ],
                            "id": 5243,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3809:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3809:190:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5252,
                        "nodeType": "ExpressionStatement",
                        "src": "3809:190:16"
                      },
                      {
                        "assignments": [
                          5254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5254,
                            "mutability": "mutable",
                            "name": "exerciseDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4014:20:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5253,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4014:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5259,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5256,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5198,
                              "src": "4067:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "657865726369736544617465",
                              "id": 5257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4076:14:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f83fdcdaa57dc786961fd63b1e3f57381e9e0f69cff3c647569c4af8601e835",
                                "typeString": "literal_string \"exerciseDate\""
                              },
                              "value": "exerciseDate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f83fdcdaa57dc786961fd63b1e3f57381e9e0f69cff3c647569c4af8601e835",
                                "typeString": "literal_string \"exerciseDate\""
                              }
                            ],
                            "id": 5255,
                            "name": "getUintValueForStateAttribute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6764,
                            "src": "4037:29:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 5258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4037:54:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4014:77:16"
                      },
                      {
                        "assignments": [
                          5261
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5261,
                            "mutability": "mutable",
                            "name": "creditEventTypeCovered",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4105:42:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5260,
                              "name": "ContractPerformance",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22513,
                              "src": "4105:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5268,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5264,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5198,
                                  "src": "4200:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6372656469744576656e7454797065436f7665726564",
                                  "id": 5265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4209:24:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c7b2f9f1b113c1196d37a64fa1165104e45cc1c0437de39637a650ec56598dc5",
                                    "typeString": "literal_string \"creditEventTypeCovered\""
                                  },
                                  "value": "creditEventTypeCovered"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c7b2f9f1b113c1196d37a64fa1165104e45cc1c0437de39637a650ec56598dc5",
                                    "typeString": "literal_string \"creditEventTypeCovered\""
                                  }
                                ],
                                "id": 5263,
                                "name": "getEnumValueForTermsAttribute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6911,
                                "src": "4170:29:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view returns (uint8)"
                                }
                              },
                              "id": 5266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4170:64:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 5262,
                            "name": "ContractPerformance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22513,
                            "src": "4150:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                              "typeString": "type(enum ContractPerformance)"
                            }
                          },
                          "id": 5267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4150:85:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4105:130:16"
                      },
                      {
                        "assignments": [
                          5270
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5270,
                            "mutability": "mutable",
                            "name": "underlyingContractPerformance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4249:49:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5269,
                              "name": "ContractPerformance",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22513,
                              "src": "4249:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5280,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5276,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5225,
                                  "src": "4386:17:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e7472616374506572666f726d616e6365",
                                  "id": 5277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4405:21:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ba63ecfbbfd64b8188211e674769a880e2a5d2146f5443ffd821e4fa81b0d0b0",
                                    "typeString": "literal_string \"contractPerformance\""
                                  },
                                  "value": "contractPerformance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_ba63ecfbbfd64b8188211e674769a880e2a5d2146f5443ffd821e4fa81b0d0b0",
                                    "typeString": "literal_string \"contractPerformance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5273,
                                      "name": "underlyingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5230,
                                      "src": "4336:18:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5272,
                                    "name": "IStateRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5776,
                                    "src": "4321:14:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IStateRegistry_$5776_$",
                                      "typeString": "type(contract IStateRegistry)"
                                    }
                                  },
                                  "id": 5274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4321:34:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                                    "typeString": "contract IStateRegistry"
                                  }
                                },
                                "id": 5275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getEnumValueForStateAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5743,
                                "src": "4321:64:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                }
                              },
                              "id": 5278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4321:106:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 5271,
                            "name": "ContractPerformance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22513,
                            "src": "4301:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                              "typeString": "type(enum ContractPerformance)"
                            }
                          },
                          "id": 5279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4301:127:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4249:179:16"
                      },
                      {
                        "assignments": [
                          5282
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5282,
                            "mutability": "mutable",
                            "name": "underlyingNonPerformingDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4442:35:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5281,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4442:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5290,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5287,
                              "name": "underlyingAssetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5225,
                              "src": "4545:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f6e506572666f726d696e6744617465",
                              "id": 5288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4564:19:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a84b226636fa153dedda0cf8a7d5991704c643eb177a47684d8783b104759021",
                                "typeString": "literal_string \"nonPerformingDate\""
                              },
                              "value": "nonPerformingDate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a84b226636fa153dedda0cf8a7d5991704c643eb177a47684d8783b104759021",
                                "typeString": "literal_string \"nonPerformingDate\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5284,
                                  "name": "underlyingRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5230,
                                  "src": "4495:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5283,
                                "name": "IStateRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5776,
                                "src": "4480:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IStateRegistry_$5776_$",
                                  "typeString": "type(contract IStateRegistry)"
                                }
                              },
                              "id": 5285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4480:34:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                                "typeString": "contract IStateRegistry"
                              }
                            },
                            "id": 5286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUintValueForStateAttribute",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5761,
                            "src": "4480:64:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                            }
                          },
                          "id": 5289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4480:104:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4442:142:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5291,
                            "name": "exerciseDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5254,
                            "src": "4659:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4674:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4659:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5302,
                        "nodeType": "IfStatement",
                        "src": "4655:258:16",
                        "trueBody": {
                          "id": 5301,
                          "nodeType": "Block",
                          "src": "4677:236:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5295,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "4782:9:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 5296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "STD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4782:13:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5297,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "4865:5:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4865:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5294,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "4749:11:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 5299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4749:149:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5203,
                              "id": 5300,
                              "nodeType": "Return",
                              "src": "4742:156:16"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 5306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5303,
                              "name": "creditEventTypeCovered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5261,
                              "src": "5049:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5304,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5075:19:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 5305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5075:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5049:48:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 5309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5307,
                              "name": "underlyingContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5270,
                              "src": "5117:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5308,
                              "name": "creditEventTypeCovered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5261,
                              "src": "5150:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5117:55:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5049:123:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5374,
                        "nodeType": "IfStatement",
                        "src": "5028:1433:16",
                        "trueBody": {
                          "id": 5373,
                          "nodeType": "Block",
                          "src": "5187:1274:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                },
                                "id": 5314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5311,
                                  "name": "underlyingContractPerformance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5270,
                                  "src": "5316:29:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5312,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "5349:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 5313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5349:22:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "5316:55:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  },
                                  "id": 5325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5322,
                                    "name": "underlyingContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5270,
                                    "src": "5555:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5323,
                                      "name": "ContractPerformance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22513,
                                      "src": "5588:19:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                        "typeString": "type(enum ContractPerformance)"
                                      }
                                    },
                                    "id": 5324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "DQ",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5588:22:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    }
                                  },
                                  "src": "5555:55:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    },
                                    "id": 5349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 5346,
                                      "name": "underlyingContractPerformance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5270,
                                      "src": "5997:29:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                        "typeString": "enum ContractPerformance"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5347,
                                        "name": "ContractPerformance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22513,
                                        "src": "6030:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                          "typeString": "type(enum ContractPerformance)"
                                        }
                                      },
                                      "id": 5348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "DF",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6030:22:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                        "typeString": "enum ContractPerformance"
                                      }
                                    },
                                    "src": "5997:55:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 5370,
                                  "nodeType": "IfStatement",
                                  "src": "5993:454:16",
                                  "trueBody": {
                                    "id": 5369,
                                    "nodeType": "Block",
                                    "src": "6054:393:16",
                                    "statements": [
                                      {
                                        "assignments": [
                                          5351
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5351,
                                            "mutability": "mutable",
                                            "name": "underlyingDelinquencyPeriod",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 5369,
                                            "src": "6076:37:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                              "typeString": "struct IP"
                                            },
                                            "typeName": {
                                              "contractScope": null,
                                              "id": 5350,
                                              "name": "IP",
                                              "nodeType": "UserDefinedTypeName",
                                              "referencedDeclaration": 22493,
                                              "src": "6076:2:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                                                "typeString": "struct IP"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5359,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 5356,
                                              "name": "underlyingAssetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5225,
                                              "src": "6183:17:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "64656c696e7175656e6379506572696f64",
                                              "id": 5357,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6202:19:16",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_685f93104b743a1db93ae9615ca1f6853a9b3c7d2cacac7b91f4914c95530e82",
                                                "typeString": "literal_string \"delinquencyPeriod\""
                                              },
                                              "value": "delinquencyPeriod"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_685f93104b743a1db93ae9615ca1f6853a9b3c7d2cacac7b91f4914c95530e82",
                                                "typeString": "literal_string \"delinquencyPeriod\""
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5353,
                                                  "name": "underlyingRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5230,
                                                  "src": "6131:18:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 5352,
                                                "name": "ITermsRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6894,
                                                "src": "6116:14:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_ITermsRegistry_$6894_$",
                                                  "typeString": "type(contract ITermsRegistry)"
                                                }
                                              },
                                              "id": 5354,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6116:34:16",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                                                "typeString": "contract ITermsRegistry"
                                              }
                                            },
                                            "id": 5355,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getPeriodValueForTermsAttribute",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6875,
                                            "src": "6116:66:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                              "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                            }
                                          },
                                          "id": 5358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6116:106:16",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                            "typeString": "struct IP memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "6076:146:16"
                                      },
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5361,
                                                "name": "EventType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22610,
                                                "src": "6288:9:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                  "typeString": "type(enum EventType)"
                                                }
                                              },
                                              "id": 5362,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "XD",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "6288:12:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_EventType_$22610",
                                                "typeString": "enum EventType"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5364,
                                                  "name": "underlyingDelinquencyPeriod",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5351,
                                                  "src": "6349:27:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                    "typeString": "struct IP memory"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5365,
                                                  "name": "underlyingNonPerformingDate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5282,
                                                  "src": "6378:27:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                    "typeString": "struct IP memory"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 5363,
                                                "name": "getTimestampPlusPeriod",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24884,
                                                "src": "6326:22:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 5366,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6326:80:16",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_enum$_EventType_$22610",
                                                "typeString": "enum EventType"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5360,
                                            "name": "encodeEvent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24702,
                                            "src": "6251:11:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 5367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6251:177:16",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "functionReturnParameters": 5203,
                                        "id": 5368,
                                        "nodeType": "Return",
                                        "src": "6244:184:16"
                                      }
                                    ]
                                  }
                                },
                                "id": 5371,
                                "nodeType": "IfStatement",
                                "src": "5551:896:16",
                                "trueBody": {
                                  "id": 5345,
                                  "nodeType": "Block",
                                  "src": "5612:375:16",
                                  "statements": [
                                    {
                                      "assignments": [
                                        5327
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 5327,
                                          "mutability": "mutable",
                                          "name": "underlyingGracePeriod",
                                          "nodeType": "VariableDeclaration",
                                          "overrides": null,
                                          "scope": 5345,
                                          "src": "5634:31:16",
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                            "typeString": "struct IP"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5326,
                                            "name": "IP",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 22493,
                                            "src": "5634:2:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                                              "typeString": "struct IP"
                                            }
                                          },
                                          "value": null,
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 5335,
                                      "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5332,
                                            "name": "underlyingAssetId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5225,
                                            "src": "5735:17:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "6772616365506572696f64",
                                            "id": 5333,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5754:13:16",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_0d7c43c707e367a6cc9d95a0f513be63dd3e1083146b503e778bcfce388b17b1",
                                              "typeString": "literal_string \"gracePeriod\""
                                            },
                                            "value": "gracePeriod"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_0d7c43c707e367a6cc9d95a0f513be63dd3e1083146b503e778bcfce388b17b1",
                                              "typeString": "literal_string \"gracePeriod\""
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 5329,
                                                "name": "underlyingRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5230,
                                                "src": "5683:18:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 5328,
                                              "name": "ITermsRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6894,
                                              "src": "5668:14:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ITermsRegistry_$6894_$",
                                                "typeString": "type(contract ITermsRegistry)"
                                              }
                                            },
                                            "id": 5330,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5668:34:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                                              "typeString": "contract ITermsRegistry"
                                            }
                                          },
                                          "id": 5331,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getPeriodValueForTermsAttribute",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6875,
                                          "src": "5668:66:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                            "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                          }
                                        },
                                        "id": 5334,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5668:100:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                          "typeString": "struct IP memory"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "5634:134:16"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 5337,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "5834:9:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 5338,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "XD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "5834:12:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 5340,
                                                "name": "underlyingGracePeriod",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5327,
                                                "src": "5895:21:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                  "typeString": "struct IP memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 5341,
                                                "name": "underlyingNonPerformingDate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5282,
                                                "src": "5918:27:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                  "typeString": "struct IP memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 5339,
                                              "name": "getTimestampPlusPeriod",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24884,
                                              "src": "5872:22:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5342,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5872:74:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5336,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "5797:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 5343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5797:171:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "functionReturnParameters": 5203,
                                      "id": 5344,
                                      "nodeType": "Return",
                                      "src": "5790:178:16"
                                    }
                                  ]
                                }
                              },
                              "id": 5372,
                              "nodeType": "IfStatement",
                              "src": "5312:1135:16",
                              "trueBody": {
                                "id": 5321,
                                "nodeType": "Block",
                                "src": "5373:172:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5316,
                                            "name": "EventType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22610,
                                            "src": "5439:9:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                              "typeString": "type(enum EventType)"
                                            }
                                          },
                                          "id": 5317,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "XD",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "5439:12:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_EventType_$22610",
                                            "typeString": "enum EventType"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 5318,
                                          "name": "underlyingNonPerformingDate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5282,
                                          "src": "5477:27:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_EventType_$22610",
                                            "typeString": "enum EventType"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 5315,
                                        "name": "encodeEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24702,
                                        "src": "5402:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                          "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 5319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5402:124:16",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "functionReturnParameters": 5203,
                                    "id": 5320,
                                    "nodeType": "Return",
                                    "src": "5395:131:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6496:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 5378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6488:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 5377,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6488:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6488:10:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5203,
                  "id": 5381,
                  "nodeType": "Return",
                  "src": "6481:17:16"
                }
              ]
            },
            "documentation": {
              "id": 5196,
              "nodeType": "StructuredDocumentation",
              "src": "3030:148:16",
              "text": " @notice If the underlying of the asset changes in performance to a covered performance,\n it returns the exerciseDate event."
            },
            "functionSelector": "75e86ae4",
            "id": 5383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextUnderlyingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5200,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3270:8:16"
            },
            "parameters": {
              "id": 5199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5198,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5383,
                  "src": "3215:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3215:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3214:17:16"
            },
            "returnParameters": {
              "id": 5203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5202,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5383,
                  "src": "3296:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5201,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3296:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:9:16"
            },
            "scope": 5716,
            "src": "3183:3322:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4896
            ],
            "body": {
              "id": 5481,
              "nodeType": "Block",
              "src": "6761:1028:16",
              "statements": [
                {
                  "assignments": [
                    5393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5393,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6771:19:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5392,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "6771:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5397,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5394,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "6793:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 5396,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5395,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5386,
                      "src": "6800:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6793:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6771:37:16"
                },
                {
                  "assignments": [
                    5399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5399,
                      "mutability": "mutable",
                      "name": "nextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6818:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5398,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6818:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5403,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5401,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5386,
                        "src": "6863:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5400,
                      "name": "getNextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6981,
                      "src": "6844:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 5402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6844:27:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6818:53:16"
                },
                {
                  "assignments": [
                    5405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5405,
                      "mutability": "mutable",
                      "name": "nextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6881:25:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5404,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6881:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5413,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5406,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "6909:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5407,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "6909:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "6909:21:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5412,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5409,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "6931:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5410,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "6931:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5411,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextScheduleIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7861,
                      "src": "6931:32:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6909:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6881:83:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5414,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5393,
                            "src": "6979:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                              "typeString": "struct Asset storage pointer"
                            }
                          },
                          "id": 5415,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "schedule",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4441,
                          "src": "6979:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                            "typeString": "struct Schedule storage ref"
                          }
                        },
                        "id": 5416,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7859,
                        "src": "6979:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7004:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6979:26:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5419,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5399,
                        "src": "7009:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7036:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7028:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5420,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7028:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7028:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "7009:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6979:59:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5431,
                  "nodeType": "IfStatement",
                  "src": "6975:82:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7055:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7047:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5426,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7047:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7047:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "functionReturnParameters": 5391,
                    "id": 5430,
                    "nodeType": "Return",
                    "src": "7040:17:16"
                  }
                },
                {
                  "assignments": [
                    5433,
                    5435
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5433,
                      "mutability": "mutable",
                      "name": "eventTypeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7069:34:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5432,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "7069:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5435,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7105:35:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5434,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7105:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5439,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5437,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5399,
                        "src": "7156:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5436,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "7144:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7144:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7068:104:16"
                },
                {
                  "assignments": [
                    5441,
                    5443
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5441,
                      "mutability": "mutable",
                      "name": "eventTypeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7183:36:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5440,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "7183:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5443,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7221:37:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5442,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7221:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5447,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5445,
                        "name": "nextScheduleEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5405,
                        "src": "7274:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5444,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "7262:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7262:30:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7182:110:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5448,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "7321:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7354:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7321:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5451,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5435,
                                    "src": "7360:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7391:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7360:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5454,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5435,
                                    "src": "7396:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5455,
                                    "name": "scheduleTimeNextScheduleEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5443,
                                    "src": "7426:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7396:59:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7360:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 5458,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7359:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7321:135:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5460,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7320:137:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5461,
                              "name": "scheduleTimeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5435,
                              "src": "7491:27:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5462,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "7522:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7491:60:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5465,
                                  "name": "eventTypeNextCyclicEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5433,
                                  "src": "7586:24:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5464,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "7571:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7571:40:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5468,
                                  "name": "eventTypeNextScheduleEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5441,
                                  "src": "7629:26:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5467,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "7614:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7614:42:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7571:85:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7491:165:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5472,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7473:197:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7320:350:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5479,
                    "nodeType": "Block",
                    "src": "7734:49:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5477,
                          "name": "nextScheduleEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5405,
                          "src": "7755:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5391,
                        "id": 5478,
                        "nodeType": "Return",
                        "src": "7748:24:16"
                      }
                    ]
                  },
                  "id": 5480,
                  "nodeType": "IfStatement",
                  "src": "7303:480:16",
                  "trueBody": {
                    "id": 5476,
                    "nodeType": "Block",
                    "src": "7681:47:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5474,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5399,
                          "src": "7702:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5391,
                        "id": 5475,
                        "nodeType": "Return",
                        "src": "7695:22:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5384,
              "nodeType": "StructuredDocumentation",
              "src": "6511:120:16",
              "text": " @notice Returns the next event to process.\n @param assetId id of the asset\n @return event"
            },
            "functionSelector": "b8282041",
            "id": 5482,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextScheduledEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5388,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6722:8:16"
            },
            "parameters": {
              "id": 5387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5386,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5482,
                  "src": "6667:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5385,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6667:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6666:17:16"
            },
            "returnParameters": {
              "id": 5391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5390,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5482,
                  "src": "6748:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5389,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6748:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6747:9:16"
            },
            "scope": 5716,
            "src": "6636:1153:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4903
            ],
            "body": {
              "id": 5657,
              "nodeType": "Block",
              "src": "8202:1921:16",
              "statements": [
                {
                  "assignments": [
                    5495
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5495,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8212:19:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5494,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "8212:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5499,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5496,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "8234:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 5498,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5497,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5485,
                      "src": "8241:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8234:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8212:37:16"
                },
                {
                  "assignments": [
                    5501
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5501,
                      "mutability": "mutable",
                      "name": "nextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8259:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5500,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8259:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5505,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5503,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5485,
                        "src": "8304:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5502,
                      "name": "getNextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6981,
                      "src": "8285:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 5504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8285:27:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8259:53:16"
                },
                {
                  "assignments": [
                    5507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5507,
                      "mutability": "mutable",
                      "name": "nextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8322:25:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5506,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8322:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5515,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5508,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5495,
                          "src": "8350:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5509,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "8350:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5510,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "8350:21:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5514,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5511,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5495,
                          "src": "8372:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "8372:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextScheduleIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7861,
                      "src": "8372:32:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8350:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8322:83:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5516,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5495,
                            "src": "8420:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                              "typeString": "struct Asset storage pointer"
                            }
                          },
                          "id": 5517,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "schedule",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4441,
                          "src": "8420:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                            "typeString": "struct Schedule storage ref"
                          }
                        },
                        "id": 5518,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7859,
                        "src": "8420:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8445:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8420:26:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5526,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5521,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5501,
                        "src": "8450:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8477:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8469:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5522,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8469:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8469:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "8450:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8420:59:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5533,
                  "nodeType": "IfStatement",
                  "src": "8416:82:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8496:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8488:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5528,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8488:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8488:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "functionReturnParameters": 5493,
                    "id": 5532,
                    "nodeType": "Return",
                    "src": "8481:17:16"
                  }
                },
                {
                  "assignments": [
                    5535,
                    5537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5535,
                      "mutability": "mutable",
                      "name": "eventTypeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8510:34:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5534,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "8510:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5537,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8546:35:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8546:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5539,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5501,
                        "src": "8597:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5538,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "8585:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8585:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8509:104:16"
                },
                {
                  "assignments": [
                    5543,
                    5545
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5543,
                      "mutability": "mutable",
                      "name": "eventTypeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8624:36:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5542,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "8624:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5545,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8662:37:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5544,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8662:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5549,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5547,
                        "name": "nextScheduleEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5507,
                        "src": "8715:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5546,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "8703:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8703:30:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8623:110:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 5552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5550,
                      "name": "nextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5501,
                      "src": "8834:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5551,
                      "name": "nextScheduleEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5507,
                      "src": "8853:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8834:36:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5587,
                  "nodeType": "IfStatement",
                  "src": "8830:399:16",
                  "trueBody": {
                    "id": 5586,
                    "nodeType": "Block",
                    "src": "8872:357:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5553,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "8886:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5557,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "8886:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5558,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastScheduleTimeOfCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7853,
                              "src": "8886:44:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                "typeString": "mapping(enum EventType => uint256)"
                              }
                            },
                            "id": 5559,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5556,
                              "name": "eventTypeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "8931:24:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8886:70:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5560,
                            "name": "scheduleTimeNextCyclicEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5537,
                            "src": "8959:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8886:100:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5562,
                        "nodeType": "ExpressionStatement",
                        "src": "8886:100:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5563,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9004:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5564,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9004:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5565,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "9004:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5566,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9040:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5567,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9040:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5568,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7859,
                            "src": "9040:21:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9004:57:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5575,
                        "nodeType": "IfStatement",
                        "src": "9000:80:16",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9078:1:16",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9070:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 5570,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9070:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9070:10:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 5493,
                          "id": 5574,
                          "nodeType": "Return",
                          "src": "9063:17:16"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5576,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9094:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5579,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9094:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5580,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "9094:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9130:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9094:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5583,
                        "nodeType": "ExpressionStatement",
                        "src": "9094:37:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5584,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5501,
                          "src": "9203:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5585,
                        "nodeType": "Return",
                        "src": "9196:22:16"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5588,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9326:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9359:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9326:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5591,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5537,
                                    "src": "9365:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9396:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "9365:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5594,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5537,
                                    "src": "9401:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5595,
                                    "name": "scheduleTimeNextScheduleEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5545,
                                    "src": "9431:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9401:59:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "9365:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 5598,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9364:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9326:135:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5600,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9325:137:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5601,
                              "name": "scheduleTimeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "9496:27:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5602,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9527:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9496:60:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5605,
                                  "name": "eventTypeNextCyclicEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5535,
                                  "src": "9591:24:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5604,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "9576:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9576:40:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5608,
                                  "name": "eventTypeNextScheduleEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5543,
                                  "src": "9634:26:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5607,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "9619:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9619:42:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9576:85:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9496:165:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5612,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9478:197:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9325:350:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5655,
                    "nodeType": "Block",
                    "src": "9853:264:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5627,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9871:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9904:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9871:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5630,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9909:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5631,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9909:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5632,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "nextScheduleIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7861,
                              "src": "9909:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5633,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9945:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5634,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9945:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5635,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7859,
                              "src": "9945:21:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9909:57:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9871:95:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5644,
                        "nodeType": "IfStatement",
                        "src": "9867:151:16",
                        "trueBody": {
                          "id": 5643,
                          "nodeType": "Block",
                          "src": "9968:50:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10001:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9993:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 5638,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9993:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9993:10:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5493,
                              "id": 5642,
                              "nodeType": "Return",
                              "src": "9986:17:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5645,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "10031:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5648,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "10031:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5649,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "10031:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10067:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10031:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5652,
                        "nodeType": "ExpressionStatement",
                        "src": "10031:37:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5653,
                          "name": "nextScheduleEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5507,
                          "src": "10089:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5654,
                        "nodeType": "Return",
                        "src": "10082:24:16"
                      }
                    ]
                  },
                  "id": 5656,
                  "nodeType": "IfStatement",
                  "src": "9308:809:16",
                  "trueBody": {
                    "id": 5626,
                    "nodeType": "Block",
                    "src": "9686:161:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5614,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9700:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5618,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9700:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5619,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastScheduleTimeOfCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7853,
                              "src": "9700:44:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                "typeString": "mapping(enum EventType => uint256)"
                              }
                            },
                            "id": 5620,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5617,
                              "name": "eventTypeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "9745:24:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9700:70:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5621,
                            "name": "scheduleTimeNextCyclicEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5537,
                            "src": "9773:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9700:100:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5623,
                        "nodeType": "ExpressionStatement",
                        "src": "9700:100:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5624,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5501,
                          "src": "9821:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5625,
                        "nodeType": "Return",
                        "src": "9814:22:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5483,
              "nodeType": "StructuredDocumentation",
              "src": "7795:259:16",
              "text": " @notice Increments the index of a schedule of an asset.\n (if max index is reached the index will be left unchanged)\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset"
            },
            "functionSelector": "c3b6e7c2",
            "id": 5658,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5489,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5485,
                    "src": "8163:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5490,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5488,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "8149:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8149:22:16"
              }
            ],
            "name": "popNextScheduledEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5487,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8132:8:16"
            },
            "parameters": {
              "id": 5486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5485,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5658,
                  "src": "8090:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5484,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8090:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8089:17:16"
            },
            "returnParameters": {
              "id": 5493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5492,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5658,
                  "src": "8189:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8188:9:16"
            },
            "scope": 5716,
            "src": "8059:2064:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4914
            ],
            "body": {
              "id": 5687,
              "nodeType": "Block",
              "src": "10474:147:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5671,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4477,
                                "src": "10505:6:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                                  "typeString": "mapping(bytes32 => struct Asset storage ref)"
                                }
                              },
                              "id": 5673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5672,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5661,
                                "src": "10512:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10505:15:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Asset_$4466_storage",
                                "typeString": "struct Asset storage ref"
                              }
                            },
                            "id": 5674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "settlement",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4465,
                            "src": "10505:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                              "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                            }
                          },
                          "id": 5676,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5675,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5663,
                            "src": "10532:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10505:34:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                            "typeString": "struct Settlement storage ref"
                          }
                        },
                        "id": 5677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isSettled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4430,
                        "src": "10505:44:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5678,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4477,
                                "src": "10563:6:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                                  "typeString": "mapping(bytes32 => struct Asset storage ref)"
                                }
                              },
                              "id": 5680,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5679,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5661,
                                "src": "10570:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10563:15:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Asset_$4466_storage",
                                "typeString": "struct Asset storage ref"
                              }
                            },
                            "id": 5681,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "settlement",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4465,
                            "src": "10563:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                              "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                            }
                          },
                          "id": 5683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5682,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5663,
                            "src": "10590:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10563:34:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                            "typeString": "struct Settlement storage ref"
                          }
                        },
                        "id": 5684,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "payoff",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4432,
                        "src": "10563:41:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 5685,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10491:123:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                      "typeString": "tuple(bool,int256)"
                    }
                  },
                  "functionReturnParameters": 5670,
                  "id": 5686,
                  "nodeType": "Return",
                  "src": "10484:130:16"
                }
              ]
            },
            "documentation": {
              "id": 5659,
              "nodeType": "StructuredDocumentation",
              "src": "10129:201:16",
              "text": " @notice Returns true if an event of an assets schedule was settled\n @param assetId id of the asset\n @param _event event (encoded)\n @return true if event was settled"
            },
            "functionSelector": "ba4d2d28",
            "id": 5688,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventSettled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5665,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10430:8:16"
            },
            "parameters": {
              "id": 5664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5661,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10359:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5660,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10359:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5663,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10376:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10376:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10358:33:16"
            },
            "returnParameters": {
              "id": 5670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5667,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10456:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5666,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10456:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5669,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10462:6:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 5668,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10462:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10455:14:16"
            },
            "scope": 5716,
            "src": "10335:286:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4923
            ],
            "body": {
              "id": 5714,
              "nodeType": "Block",
              "src": "10979:102:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5702,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "10989:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5704,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5703,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5691,
                            "src": "10996:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10989:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5705,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlement",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4465,
                        "src": "10989:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                          "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                        }
                      },
                      "id": 5707,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5706,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5693,
                        "src": "11016:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10989:34:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                        "typeString": "struct Settlement storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11050:4:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5710,
                          "name": "_payoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5695,
                          "src": "11064:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 5708,
                        "name": "Settlement",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4433,
                        "src": "11026:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Settlement_$4433_storage_ptr_$",
                          "typeString": "type(struct Settlement storage pointer)"
                        }
                      },
                      "id": 5711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "isSettled",
                        "payoff"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11026:48:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Settlement_$4433_memory_ptr",
                        "typeString": "struct Settlement memory"
                      }
                    },
                    "src": "10989:85:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                      "typeString": "struct Settlement storage ref"
                    }
                  },
                  "id": 5713,
                  "nodeType": "ExpressionStatement",
                  "src": "10989:85:16"
                }
              ]
            },
            "documentation": {
              "id": 5689,
              "nodeType": "StructuredDocumentation",
              "src": "10627:201:16",
              "text": " @notice Mark an event as settled\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param _event event (encoded) to be marked as settled"
            },
            "functionSelector": "de07a173",
            "id": 5715,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5699,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5691,
                    "src": "10966:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5700,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5698,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "10952:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10952:22:16"
              }
            ],
            "name": "markEventAsSettled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5697,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10935:8:16"
            },
            "parameters": {
              "id": 5696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5691,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10861:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5690,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10861:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5693,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10878:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5692,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10878:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5695,
                  "mutability": "mutable",
                  "name": "_payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10894:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 5694,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10894:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10860:49:16"
            },
            "returnParameters": {
              "id": 5701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10979:0:16"
            },
            "scope": 5716,
            "src": "10833:248:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5717,
        "src": "573:10838:16"
      }
    ],
    "src": "41:11371:16"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol",
    "exportedSymbols": {
      "ScheduleRegistry": [
        5716
      ]
    },
    "id": 5717,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5032,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:16"
      },
      {
        "id": 5033,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:16"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 5034,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 24759,
        "src": "101:67:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "id": 5035,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 24886,
        "src": "169:68:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
        "file": "../BaseRegistryStorage.sol",
        "id": 5036,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4479,
        "src": "239:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol",
        "file": "../IBaseRegistry.sol",
        "id": 5037,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4540,
        "src": "276:30:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol",
        "file": "../AccessControl/AccessControl.sol",
        "id": 5038,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4084,
        "src": "307:44:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol",
        "file": "../Terms/TermsRegistry.sol",
        "id": 5039,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6983,
        "src": "352:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol",
        "file": "../Terms/ITermsRegistry.sol",
        "id": 5040,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6895,
        "src": "389:37:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol",
        "file": "../State/StateRegistry.sol",
        "id": 5041,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 6818,
        "src": "427:36:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol",
        "file": "../State/IStateRegistry.sol",
        "id": 5042,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 5777,
        "src": "464:37:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol",
        "file": "./IScheduleRegistry.sol",
        "id": 5043,
        "nodeType": "ImportDirective",
        "scope": 5717,
        "sourceUnit": 4925,
        "src": "502:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5045,
              "name": "BaseRegistryStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4478,
              "src": "615:19:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistryStorage_$4478",
                "typeString": "contract BaseRegistryStorage"
              }
            },
            "id": 5046,
            "nodeType": "InheritanceSpecifier",
            "src": "615:19:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5047,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4083,
              "src": "640:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$4083",
                "typeString": "contract AccessControl"
              }
            },
            "id": 5048,
            "nodeType": "InheritanceSpecifier",
            "src": "640:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5049,
              "name": "TermsRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6982,
              "src": "659:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                "typeString": "contract TermsRegistry"
              }
            },
            "id": 5050,
            "nodeType": "InheritanceSpecifier",
            "src": "659:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5051,
              "name": "StateRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6817,
              "src": "678:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StateRegistry_$6817",
                "typeString": "contract StateRegistry"
              }
            },
            "id": 5052,
            "nodeType": "InheritanceSpecifier",
            "src": "678:13:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5053,
              "name": "IScheduleRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4924,
              "src": "697:17:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IScheduleRegistry_$4924",
                "typeString": "contract IScheduleRegistry"
              }
            },
            "id": 5054,
            "nodeType": "InheritanceSpecifier",
            "src": "697:17:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5055,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "720:10:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 5056,
            "nodeType": "InheritanceSpecifier",
            "src": "720:10:16"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5057,
              "name": "PeriodUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24885,
              "src": "736:11:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PeriodUtils_$24885",
                "typeString": "contract PeriodUtils"
              }
            },
            "id": 5058,
            "nodeType": "InheritanceSpecifier",
            "src": "736:11:16"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4478,
          4924,
          5776,
          6817,
          6982,
          24758,
          24885
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 5044,
          "nodeType": "StructuredDocumentation",
          "src": "538:34:16",
          "text": " @title ScheduleRegistry"
        },
        "fullyImplemented": false,
        "id": 5716,
        "linearizedBaseContracts": [
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6982,
          4083,
          4125,
          4478
        ],
        "name": "ScheduleRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              4867
            ],
            "body": {
              "id": 5077,
              "nodeType": "Block",
              "src": "1105:62:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5069,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "1122:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5071,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5070,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5061,
                            "src": "1129:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1122:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5072,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "1122:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5073,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "1122:31:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5075,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5074,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5063,
                      "src": "1154:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1122:38:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5068,
                  "id": 5076,
                  "nodeType": "Return",
                  "src": "1115:45:16"
                }
              ]
            },
            "documentation": {
              "id": 5059,
              "nodeType": "StructuredDocumentation",
              "src": "754:212:16",
              "text": " @notice Returns an event for a given position (index) in a schedule of a given asset.\n @param assetId id of the asset\n @param index index of the event to return\n @return Event"
            },
            "functionSelector": "b02ca0c0",
            "id": 5078,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEventAtIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5065,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1066:8:16"
            },
            "parameters": {
              "id": 5064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5061,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "996:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "996:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5063,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "1013:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "995:32:16"
            },
            "returnParameters": {
              "id": 5068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5067,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5078,
                  "src": "1092:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:9:16"
            },
            "scope": 5716,
            "src": "971:196:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4874
            ],
            "body": {
              "id": 5093,
              "nodeType": "Block",
              "src": "1453:55:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5087,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1470:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5089,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5088,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5081,
                          "src": "1477:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1470:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "1470:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5091,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7859,
                    "src": "1470:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5086,
                  "id": 5092,
                  "nodeType": "Return",
                  "src": "1463:38:16"
                }
              ]
            },
            "documentation": {
              "id": 5079,
              "nodeType": "StructuredDocumentation",
              "src": "1174:153:16",
              "text": " @notice Returns the length of a schedule of a given asset.\n @param assetId id of the asset\n @return Length of the schedule"
            },
            "functionSelector": "a17b75b5",
            "id": 5094,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getScheduleLength",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5083,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1414:8:16"
            },
            "parameters": {
              "id": 5082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5081,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5094,
                  "src": "1359:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5080,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1359:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1358:17:16"
            },
            "returnParameters": {
              "id": 5086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5085,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5094,
                  "src": "1440:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5084,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1440:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1439:9:16"
            },
            "scope": 5716,
            "src": "1332:176:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4882
            ],
            "body": {
              "id": 5110,
              "nodeType": "Block",
              "src": "1891:62:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5104,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1908:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5105,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5097,
                          "src": "1915:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1908:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetSchedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5029,
                      "src": "1908:36:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 5108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1908:38:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 5103,
                  "id": 5109,
                  "nodeType": "Return",
                  "src": "1901:45:16"
                }
              ]
            },
            "documentation": {
              "id": 5095,
              "nodeType": "StructuredDocumentation",
              "src": "1514:248:16",
              "text": " @notice Convenience method for retrieving the entire schedule\n Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\n @param assetId id of the asset\n @return the schedule"
            },
            "functionSelector": "3adc277a",
            "id": 5111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSchedule",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5099,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1843:8:16"
            },
            "parameters": {
              "id": 5098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5097,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5111,
                  "src": "1788:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5096,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1787:17:16"
            },
            "returnParameters": {
              "id": 5103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5102,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5111,
                  "src": "1869:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5100,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1869:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 5101,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1869:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1868:18:16"
            },
            "scope": 5716,
            "src": "1767:186:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4837
            ],
            "body": {
              "id": 5125,
              "nodeType": "Block",
              "src": "2078:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5119,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2095:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5121,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5120,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5113,
                          "src": "2102:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2095:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5122,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2095:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5123,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pendingEvent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7863,
                    "src": "2095:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5118,
                  "id": 5124,
                  "nodeType": "Return",
                  "src": "2088:44:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "f52f84e1",
            "id": 5126,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5115,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2039:8:16"
            },
            "parameters": {
              "id": 5114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5113,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5126,
                  "src": "1984:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5112,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1984:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1983:17:16"
            },
            "returnParameters": {
              "id": 5118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5126,
                  "src": "2065:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2065:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2064:9:16"
            },
            "scope": 5716,
            "src": "1959:180:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4844
            ],
            "body": {
              "id": 5145,
              "nodeType": "Block",
              "src": "2279:69:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5137,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "2289:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5139,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5138,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5128,
                            "src": "2296:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2289:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5140,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "2289:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5141,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7863,
                      "src": "2289:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5142,
                      "name": "pendingEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5130,
                      "src": "2329:12:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2289:52:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5144,
                  "nodeType": "ExpressionStatement",
                  "src": "2289:52:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d981e773",
            "id": 5146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5134,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5128,
                    "src": "2266:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5135,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5133,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2252:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2252:22:16"
              }
            ],
            "name": "pushPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2235:8:16"
            },
            "parameters": {
              "id": 5131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5128,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5146,
                  "src": "2171:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5127,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2171:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5130,
                  "mutability": "mutable",
                  "name": "pendingEvent",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5146,
                  "src": "2188:20:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5129,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2170:39:16"
            },
            "returnParameters": {
              "id": 5136,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2279:0:16"
            },
            "scope": 5716,
            "src": "2145:203:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4851
            ],
            "body": {
              "id": 5178,
              "nodeType": "Block",
              "src": "2491:167:16",
              "statements": [
                {
                  "assignments": [
                    5158
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5158,
                      "mutability": "mutable",
                      "name": "pendingEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5178,
                      "src": "2501:20:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5157,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2501:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5164,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5159,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2524:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5161,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5160,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5148,
                          "src": "2531:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2524:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5162,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2524:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5163,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pendingEvent",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7863,
                    "src": "2524:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2501:60:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5165,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "2571:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5167,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5166,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5148,
                            "src": "2578:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2571:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5168,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "2571:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5169,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pendingEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7863,
                      "src": "2571:37:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2619:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2611:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5170,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2611:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2611:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2571:50:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5175,
                  "nodeType": "ExpressionStatement",
                  "src": "2571:50:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5176,
                    "name": "pendingEvent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5158,
                    "src": "2639:12:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5156,
                  "id": 5177,
                  "nodeType": "Return",
                  "src": "2632:19:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0c5b75a4",
            "id": 5179,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5152,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5148,
                    "src": "2452:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5153,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5151,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2438:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2438:22:16"
              }
            ],
            "name": "popPendingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5150,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2421:8:16"
            },
            "parameters": {
              "id": 5149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5148,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5179,
                  "src": "2379:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5147,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2378:17:16"
            },
            "returnParameters": {
              "id": 5156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5155,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5179,
                  "src": "2478:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5154,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2477:9:16"
            },
            "scope": 5716,
            "src": "2354:304:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4889
            ],
            "body": {
              "id": 5194,
              "nodeType": "Block",
              "src": "2958:66:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5188,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2975:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 5190,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5189,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5182,
                          "src": "2982:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2975:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 5191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "schedule",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4441,
                      "src": "2975:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                        "typeString": "struct Schedule storage ref"
                      }
                    },
                    "id": 5192,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextScheduleIndex",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 7861,
                    "src": "2975:42:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5187,
                  "id": 5193,
                  "nodeType": "Return",
                  "src": "2968:49:16"
                }
              ]
            },
            "documentation": {
              "id": 5180,
              "nodeType": "StructuredDocumentation",
              "src": "2664:165:16",
              "text": " @notice Returns the index of the next event to be processed for a schedule of an asset.\n @param assetId id of the asset\n @return Index"
            },
            "functionSelector": "28e0f8a9",
            "id": 5195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextScheduleIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5184,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2919:8:16"
            },
            "parameters": {
              "id": 5183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5182,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5195,
                  "src": "2864:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2864:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2863:17:16"
            },
            "returnParameters": {
              "id": 5187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5186,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5195,
                  "src": "2945:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5185,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2945:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2944:9:16"
            },
            "scope": 5716,
            "src": "2834:190:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4858
            ],
            "body": {
              "id": 5382,
              "nodeType": "Block",
              "src": "3309:3196:16",
              "statements": [
                {
                  "assignments": [
                    5205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5205,
                      "mutability": "mutable",
                      "name": "contractReference_1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5382,
                      "src": "3319:44:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                        "typeString": "struct ContractReference"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5204,
                        "name": "ContractReference",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22632,
                        "src": "3319:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                          "typeString": "struct ContractReference"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5210,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5207,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5198,
                        "src": "3409:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e74726163745265666572656e63655f31",
                        "id": 5208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3418:21:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                          "typeString": "literal_string \"contractReference_1\""
                        },
                        "value": "contractReference_1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fccc1e0ba97688e4461de29822b04128d8dc5fa1732f7c98f11aef3737c54c21",
                          "typeString": "literal_string \"contractReference_1\""
                        }
                      ],
                      "id": 5206,
                      "name": "getContractReferenceValueForTermsAttribute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6974,
                      "src": "3366:42:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$",
                        "typeString": "function (bytes32,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 5209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3366:74:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3319:121:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5211,
                          "name": "contractReference_1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "3481:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                            "typeString": "struct ContractReference memory"
                          }
                        },
                        "id": 5212,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "object",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22625,
                        "src": "3481:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3519:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3511:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5213,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3511:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3511:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "3481:40:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                        "typeString": "enum ContractReferenceRole"
                      },
                      "id": 5222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5218,
                          "name": "contractReference_1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "3525:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                            "typeString": "struct ContractReference memory"
                          }
                        },
                        "id": 5219,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "role",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22631,
                        "src": "3525:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                          "typeString": "enum ContractReferenceRole"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5220,
                          "name": "ContractReferenceRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22525,
                          "src": "3553:21:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractReferenceRole_$22525_$",
                            "typeString": "type(enum ContractReferenceRole)"
                          }
                        },
                        "id": 5221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "COVE",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3553:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractReferenceRole_$22525",
                          "typeString": "enum ContractReferenceRole"
                        }
                      },
                      "src": "3525:54:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3481:98:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5376,
                  "nodeType": "IfStatement",
                  "src": "3477:2994:16",
                  "trueBody": {
                    "id": 5375,
                    "nodeType": "Block",
                    "src": "3581:2890:16",
                    "statements": [
                      {
                        "assignments": [
                          5225
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5225,
                            "mutability": "mutable",
                            "name": "underlyingAssetId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "3595:25:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5224,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3595:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5228,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5226,
                            "name": "contractReference_1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5205,
                            "src": "3623:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                              "typeString": "struct ContractReference memory"
                            }
                          },
                          "id": 5227,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "object",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22625,
                          "src": "3623:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3595:54:16"
                      },
                      {
                        "assignments": [
                          5230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5230,
                            "mutability": "mutable",
                            "name": "underlyingRegistry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "3663:26:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5229,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3663:7:16",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5242,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5237,
                                        "name": "contractReference_1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5205,
                                        "src": "3716:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                                          "typeString": "struct ContractReference memory"
                                        }
                                      },
                                      "id": 5238,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "object2",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22627,
                                      "src": "3716:27:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 5236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3708:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 5235,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3708:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 5239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3708:36:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3700:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 5233,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3700:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3700:45:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 5232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3692:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5231,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3692:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 5241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3692:54:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3663:83:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5248,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5225,
                                  "src": "3881:17:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5245,
                                      "name": "underlyingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5230,
                                      "src": "3848:18:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5244,
                                    "name": "IBaseRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4539,
                                    "src": "3834:13:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IBaseRegistry_$4539_$",
                                      "typeString": "type(contract IBaseRegistry)"
                                    }
                                  },
                                  "id": 5246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3834:33:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBaseRegistry_$4539",
                                    "typeString": "contract IBaseRegistry"
                                  }
                                },
                                "id": 5247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isRegistered",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4510,
                                "src": "3834:46:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (bytes32) view external returns (bool)"
                                }
                              },
                              "id": 5249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3834:65:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "41737365744163746f722e6765744e657874556e6465726c79696e674576656e743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f4558495354",
                              "id": 5250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3917:68:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f072f272c22749e8bacbe86b02b94f35bdbe812ff36a32ab08daa6ec8f5df7c2",
                                "typeString": "literal_string \"AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST\""
                              },
                              "value": "AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f072f272c22749e8bacbe86b02b94f35bdbe812ff36a32ab08daa6ec8f5df7c2",
                                "typeString": "literal_string \"AssetActor.getNextUnderlyingEvent: UNDERLYING_ASSET_DOES_NOT_EXIST\""
                              }
                            ],
                            "id": 5243,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3809:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3809:190:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5252,
                        "nodeType": "ExpressionStatement",
                        "src": "3809:190:16"
                      },
                      {
                        "assignments": [
                          5254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5254,
                            "mutability": "mutable",
                            "name": "exerciseDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4014:20:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5253,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4014:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5259,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5256,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5198,
                              "src": "4067:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "657865726369736544617465",
                              "id": 5257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4076:14:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3f83fdcdaa57dc786961fd63b1e3f57381e9e0f69cff3c647569c4af8601e835",
                                "typeString": "literal_string \"exerciseDate\""
                              },
                              "value": "exerciseDate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3f83fdcdaa57dc786961fd63b1e3f57381e9e0f69cff3c647569c4af8601e835",
                                "typeString": "literal_string \"exerciseDate\""
                              }
                            ],
                            "id": 5255,
                            "name": "getUintValueForStateAttribute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6764,
                            "src": "4037:29:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 5258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4037:54:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4014:77:16"
                      },
                      {
                        "assignments": [
                          5261
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5261,
                            "mutability": "mutable",
                            "name": "creditEventTypeCovered",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4105:42:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5260,
                              "name": "ContractPerformance",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22513,
                              "src": "4105:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5268,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5264,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5198,
                                  "src": "4200:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6372656469744576656e7454797065436f7665726564",
                                  "id": 5265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4209:24:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c7b2f9f1b113c1196d37a64fa1165104e45cc1c0437de39637a650ec56598dc5",
                                    "typeString": "literal_string \"creditEventTypeCovered\""
                                  },
                                  "value": "creditEventTypeCovered"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c7b2f9f1b113c1196d37a64fa1165104e45cc1c0437de39637a650ec56598dc5",
                                    "typeString": "literal_string \"creditEventTypeCovered\""
                                  }
                                ],
                                "id": 5263,
                                "name": "getEnumValueForTermsAttribute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6911,
                                "src": "4170:29:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view returns (uint8)"
                                }
                              },
                              "id": 5266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4170:64:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 5262,
                            "name": "ContractPerformance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22513,
                            "src": "4150:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                              "typeString": "type(enum ContractPerformance)"
                            }
                          },
                          "id": 5267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4150:85:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4105:130:16"
                      },
                      {
                        "assignments": [
                          5270
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5270,
                            "mutability": "mutable",
                            "name": "underlyingContractPerformance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4249:49:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5269,
                              "name": "ContractPerformance",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22513,
                              "src": "4249:19:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5280,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5276,
                                  "name": "underlyingAssetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5225,
                                  "src": "4386:17:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "636f6e7472616374506572666f726d616e6365",
                                  "id": 5277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4405:21:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ba63ecfbbfd64b8188211e674769a880e2a5d2146f5443ffd821e4fa81b0d0b0",
                                    "typeString": "literal_string \"contractPerformance\""
                                  },
                                  "value": "contractPerformance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_ba63ecfbbfd64b8188211e674769a880e2a5d2146f5443ffd821e4fa81b0d0b0",
                                    "typeString": "literal_string \"contractPerformance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5273,
                                      "name": "underlyingRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5230,
                                      "src": "4336:18:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5272,
                                    "name": "IStateRegistry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5776,
                                    "src": "4321:14:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IStateRegistry_$5776_$",
                                      "typeString": "type(contract IStateRegistry)"
                                    }
                                  },
                                  "id": 5274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4321:34:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                                    "typeString": "contract IStateRegistry"
                                  }
                                },
                                "id": 5275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getEnumValueForStateAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5743,
                                "src": "4321:64:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                                }
                              },
                              "id": 5278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4321:106:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 5271,
                            "name": "ContractPerformance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22513,
                            "src": "4301:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                              "typeString": "type(enum ContractPerformance)"
                            }
                          },
                          "id": 5279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4301:127:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                            "typeString": "enum ContractPerformance"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4249:179:16"
                      },
                      {
                        "assignments": [
                          5282
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5282,
                            "mutability": "mutable",
                            "name": "underlyingNonPerformingDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5375,
                            "src": "4442:35:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5281,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4442:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5290,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5287,
                              "name": "underlyingAssetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5225,
                              "src": "4545:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6e6f6e506572666f726d696e6744617465",
                              "id": 5288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4564:19:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a84b226636fa153dedda0cf8a7d5991704c643eb177a47684d8783b104759021",
                                "typeString": "literal_string \"nonPerformingDate\""
                              },
                              "value": "nonPerformingDate"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a84b226636fa153dedda0cf8a7d5991704c643eb177a47684d8783b104759021",
                                "typeString": "literal_string \"nonPerformingDate\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5284,
                                  "name": "underlyingRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5230,
                                  "src": "4495:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5283,
                                "name": "IStateRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5776,
                                "src": "4480:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IStateRegistry_$5776_$",
                                  "typeString": "type(contract IStateRegistry)"
                                }
                              },
                              "id": 5285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4480:34:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStateRegistry_$5776",
                                "typeString": "contract IStateRegistry"
                              }
                            },
                            "id": 5286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUintValueForStateAttribute",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5761,
                            "src": "4480:64:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                            }
                          },
                          "id": 5289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4480:104:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4442:142:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5291,
                            "name": "exerciseDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5254,
                            "src": "4659:12:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4674:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4659:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5302,
                        "nodeType": "IfStatement",
                        "src": "4655:258:16",
                        "trueBody": {
                          "id": 5301,
                          "nodeType": "Block",
                          "src": "4677:236:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5295,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "4782:9:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 5296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "STD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4782:13:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5297,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "4865:5:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4865:15:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5294,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "4749:11:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 5299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4749:149:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5203,
                              "id": 5300,
                              "nodeType": "Return",
                              "src": "4742:156:16"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 5306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5303,
                              "name": "creditEventTypeCovered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5261,
                              "src": "5049:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5304,
                                "name": "ContractPerformance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22513,
                                "src": "5075:19:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                  "typeString": "type(enum ContractPerformance)"
                                }
                              },
                              "id": 5305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5075:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5049:48:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                              "typeString": "enum ContractPerformance"
                            },
                            "id": 5309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5307,
                              "name": "underlyingContractPerformance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5270,
                              "src": "5117:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5308,
                              "name": "creditEventTypeCovered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5261,
                              "src": "5150:22:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                "typeString": "enum ContractPerformance"
                              }
                            },
                            "src": "5117:55:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5049:123:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5374,
                        "nodeType": "IfStatement",
                        "src": "5028:1433:16",
                        "trueBody": {
                          "id": 5373,
                          "nodeType": "Block",
                          "src": "5187:1274:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                },
                                "id": 5314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5311,
                                  "name": "underlyingContractPerformance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5270,
                                  "src": "5316:29:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5312,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "5349:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 5313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5349:22:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "5316:55:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  },
                                  "id": 5325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5322,
                                    "name": "underlyingContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5270,
                                    "src": "5555:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5323,
                                      "name": "ContractPerformance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22513,
                                      "src": "5588:19:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                        "typeString": "type(enum ContractPerformance)"
                                      }
                                    },
                                    "id": 5324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "DQ",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5588:22:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    }
                                  },
                                  "src": "5555:55:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                      "typeString": "enum ContractPerformance"
                                    },
                                    "id": 5349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 5346,
                                      "name": "underlyingContractPerformance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5270,
                                      "src": "5997:29:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                        "typeString": "enum ContractPerformance"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5347,
                                        "name": "ContractPerformance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22513,
                                        "src": "6030:19:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                          "typeString": "type(enum ContractPerformance)"
                                        }
                                      },
                                      "id": 5348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "DF",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6030:22:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                        "typeString": "enum ContractPerformance"
                                      }
                                    },
                                    "src": "5997:55:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 5370,
                                  "nodeType": "IfStatement",
                                  "src": "5993:454:16",
                                  "trueBody": {
                                    "id": 5369,
                                    "nodeType": "Block",
                                    "src": "6054:393:16",
                                    "statements": [
                                      {
                                        "assignments": [
                                          5351
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5351,
                                            "mutability": "mutable",
                                            "name": "underlyingDelinquencyPeriod",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 5369,
                                            "src": "6076:37:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                              "typeString": "struct IP"
                                            },
                                            "typeName": {
                                              "contractScope": null,
                                              "id": 5350,
                                              "name": "IP",
                                              "nodeType": "UserDefinedTypeName",
                                              "referencedDeclaration": 22493,
                                              "src": "6076:2:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                                                "typeString": "struct IP"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5359,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 5356,
                                              "name": "underlyingAssetId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5225,
                                              "src": "6183:17:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "64656c696e7175656e6379506572696f64",
                                              "id": 5357,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6202:19:16",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_685f93104b743a1db93ae9615ca1f6853a9b3c7d2cacac7b91f4914c95530e82",
                                                "typeString": "literal_string \"delinquencyPeriod\""
                                              },
                                              "value": "delinquencyPeriod"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_685f93104b743a1db93ae9615ca1f6853a9b3c7d2cacac7b91f4914c95530e82",
                                                "typeString": "literal_string \"delinquencyPeriod\""
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5353,
                                                  "name": "underlyingRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5230,
                                                  "src": "6131:18:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 5352,
                                                "name": "ITermsRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6894,
                                                "src": "6116:14:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_ITermsRegistry_$6894_$",
                                                  "typeString": "type(contract ITermsRegistry)"
                                                }
                                              },
                                              "id": 5354,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6116:34:16",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                                                "typeString": "contract ITermsRegistry"
                                              }
                                            },
                                            "id": 5355,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getPeriodValueForTermsAttribute",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6875,
                                            "src": "6116:66:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                              "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                            }
                                          },
                                          "id": 5358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6116:106:16",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                            "typeString": "struct IP memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "6076:146:16"
                                      },
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5361,
                                                "name": "EventType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22610,
                                                "src": "6288:9:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                  "typeString": "type(enum EventType)"
                                                }
                                              },
                                              "id": 5362,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "XD",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "6288:12:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_EventType_$22610",
                                                "typeString": "enum EventType"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5364,
                                                  "name": "underlyingDelinquencyPeriod",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5351,
                                                  "src": "6349:27:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                    "typeString": "struct IP memory"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5365,
                                                  "name": "underlyingNonPerformingDate",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5282,
                                                  "src": "6378:27:16",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                    "typeString": "struct IP memory"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 5363,
                                                "name": "getTimestampPlusPeriod",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 24884,
                                                "src": "6326:22:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 5366,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6326:80:16",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_enum$_EventType_$22610",
                                                "typeString": "enum EventType"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5360,
                                            "name": "encodeEvent",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 24702,
                                            "src": "6251:11:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 5367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6251:177:16",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "functionReturnParameters": 5203,
                                        "id": 5368,
                                        "nodeType": "Return",
                                        "src": "6244:184:16"
                                      }
                                    ]
                                  }
                                },
                                "id": 5371,
                                "nodeType": "IfStatement",
                                "src": "5551:896:16",
                                "trueBody": {
                                  "id": 5345,
                                  "nodeType": "Block",
                                  "src": "5612:375:16",
                                  "statements": [
                                    {
                                      "assignments": [
                                        5327
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 5327,
                                          "mutability": "mutable",
                                          "name": "underlyingGracePeriod",
                                          "nodeType": "VariableDeclaration",
                                          "overrides": null,
                                          "scope": 5345,
                                          "src": "5634:31:16",
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                            "typeString": "struct IP"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5326,
                                            "name": "IP",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 22493,
                                            "src": "5634:2:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                                              "typeString": "struct IP"
                                            }
                                          },
                                          "value": null,
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 5335,
                                      "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 5332,
                                            "name": "underlyingAssetId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5225,
                                            "src": "5735:17:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "6772616365506572696f64",
                                            "id": 5333,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5754:13:16",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_0d7c43c707e367a6cc9d95a0f513be63dd3e1083146b503e778bcfce388b17b1",
                                              "typeString": "literal_string \"gracePeriod\""
                                            },
                                            "value": "gracePeriod"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_0d7c43c707e367a6cc9d95a0f513be63dd3e1083146b503e778bcfce388b17b1",
                                              "typeString": "literal_string \"gracePeriod\""
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 5329,
                                                "name": "underlyingRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5230,
                                                "src": "5683:18:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 5328,
                                              "name": "ITermsRegistry",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6894,
                                              "src": "5668:14:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_ITermsRegistry_$6894_$",
                                                "typeString": "type(contract ITermsRegistry)"
                                              }
                                            },
                                            "id": 5330,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5668:34:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                                              "typeString": "contract ITermsRegistry"
                                            }
                                          },
                                          "id": 5331,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getPeriodValueForTermsAttribute",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6875,
                                          "src": "5668:66:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                            "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                          }
                                        },
                                        "id": 5334,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5668:100:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                          "typeString": "struct IP memory"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "5634:134:16"
                                    },
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 5337,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "5834:9:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 5338,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "XD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "5834:12:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 5340,
                                                "name": "underlyingGracePeriod",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5327,
                                                "src": "5895:21:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                  "typeString": "struct IP memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 5341,
                                                "name": "underlyingNonPerformingDate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5282,
                                                "src": "5918:27:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                                  "typeString": "struct IP memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 5339,
                                              "name": "getTimestampPlusPeriod",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24884,
                                              "src": "5872:22:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5342,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5872:74:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5336,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "5797:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 5343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5797:171:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "functionReturnParameters": 5203,
                                      "id": 5344,
                                      "nodeType": "Return",
                                      "src": "5790:178:16"
                                    }
                                  ]
                                }
                              },
                              "id": 5372,
                              "nodeType": "IfStatement",
                              "src": "5312:1135:16",
                              "trueBody": {
                                "id": 5321,
                                "nodeType": "Block",
                                "src": "5373:172:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 5316,
                                            "name": "EventType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22610,
                                            "src": "5439:9:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                              "typeString": "type(enum EventType)"
                                            }
                                          },
                                          "id": 5317,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "XD",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "5439:12:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_EventType_$22610",
                                            "typeString": "enum EventType"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 5318,
                                          "name": "underlyingNonPerformingDate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5282,
                                          "src": "5477:27:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_EventType_$22610",
                                            "typeString": "enum EventType"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 5315,
                                        "name": "encodeEvent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24702,
                                        "src": "5402:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                          "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 5319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5402:124:16",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "functionReturnParameters": 5203,
                                    "id": 5320,
                                    "nodeType": "Return",
                                    "src": "5395:131:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6496:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 5378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6488:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 5377,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6488:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6488:10:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5203,
                  "id": 5381,
                  "nodeType": "Return",
                  "src": "6481:17:16"
                }
              ]
            },
            "documentation": {
              "id": 5196,
              "nodeType": "StructuredDocumentation",
              "src": "3030:148:16",
              "text": " @notice If the underlying of the asset changes in performance to a covered performance,\n it returns the exerciseDate event."
            },
            "functionSelector": "75e86ae4",
            "id": 5383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextUnderlyingEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5200,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3270:8:16"
            },
            "parameters": {
              "id": 5199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5198,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5383,
                  "src": "3215:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3215:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3214:17:16"
            },
            "returnParameters": {
              "id": 5203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5202,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5383,
                  "src": "3296:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5201,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3296:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:9:16"
            },
            "scope": 5716,
            "src": "3183:3322:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4896
            ],
            "body": {
              "id": 5481,
              "nodeType": "Block",
              "src": "6761:1028:16",
              "statements": [
                {
                  "assignments": [
                    5393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5393,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6771:19:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5392,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "6771:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5397,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5394,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "6793:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 5396,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5395,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5386,
                      "src": "6800:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6793:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6771:37:16"
                },
                {
                  "assignments": [
                    5399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5399,
                      "mutability": "mutable",
                      "name": "nextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6818:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5398,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6818:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5403,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5401,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5386,
                        "src": "6863:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5400,
                      "name": "getNextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6981,
                      "src": "6844:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 5402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6844:27:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6818:53:16"
                },
                {
                  "assignments": [
                    5405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5405,
                      "mutability": "mutable",
                      "name": "nextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "6881:25:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5404,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6881:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5413,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5406,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "6909:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5407,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "6909:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "6909:21:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5412,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5409,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5393,
                          "src": "6931:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5410,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "6931:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5411,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextScheduleIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7861,
                      "src": "6931:32:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6909:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6881:83:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5414,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5393,
                            "src": "6979:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                              "typeString": "struct Asset storage pointer"
                            }
                          },
                          "id": 5415,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "schedule",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4441,
                          "src": "6979:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                            "typeString": "struct Schedule storage ref"
                          }
                        },
                        "id": 5416,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7859,
                        "src": "6979:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7004:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6979:26:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5419,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5399,
                        "src": "7009:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7036:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7028:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5420,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7028:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7028:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "7009:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6979:59:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5431,
                  "nodeType": "IfStatement",
                  "src": "6975:82:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7055:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7047:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5426,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7047:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7047:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "functionReturnParameters": 5391,
                    "id": 5430,
                    "nodeType": "Return",
                    "src": "7040:17:16"
                  }
                },
                {
                  "assignments": [
                    5433,
                    5435
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5433,
                      "mutability": "mutable",
                      "name": "eventTypeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7069:34:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5432,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "7069:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5435,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7105:35:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5434,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7105:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5439,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5437,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5399,
                        "src": "7156:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5436,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "7144:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7144:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7068:104:16"
                },
                {
                  "assignments": [
                    5441,
                    5443
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5441,
                      "mutability": "mutable",
                      "name": "eventTypeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7183:36:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5440,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "7183:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5443,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5481,
                      "src": "7221:37:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5442,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7221:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5447,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5445,
                        "name": "nextScheduleEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5405,
                        "src": "7274:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5444,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "7262:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7262:30:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7182:110:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5448,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "7321:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7354:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7321:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5451,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5435,
                                    "src": "7360:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7391:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7360:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5456,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5454,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5435,
                                    "src": "7396:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5455,
                                    "name": "scheduleTimeNextScheduleEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5443,
                                    "src": "7426:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7396:59:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7360:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 5458,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7359:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7321:135:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5460,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7320:137:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5461,
                              "name": "scheduleTimeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5435,
                              "src": "7491:27:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5462,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5443,
                              "src": "7522:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7491:60:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5465,
                                  "name": "eventTypeNextCyclicEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5433,
                                  "src": "7586:24:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5464,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "7571:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7571:40:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5468,
                                  "name": "eventTypeNextScheduleEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5441,
                                  "src": "7629:26:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5467,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "7614:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7614:42:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7571:85:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7491:165:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5472,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7473:197:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7320:350:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5479,
                    "nodeType": "Block",
                    "src": "7734:49:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5477,
                          "name": "nextScheduleEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5405,
                          "src": "7755:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5391,
                        "id": 5478,
                        "nodeType": "Return",
                        "src": "7748:24:16"
                      }
                    ]
                  },
                  "id": 5480,
                  "nodeType": "IfStatement",
                  "src": "7303:480:16",
                  "trueBody": {
                    "id": 5476,
                    "nodeType": "Block",
                    "src": "7681:47:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5474,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5399,
                          "src": "7702:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5391,
                        "id": 5475,
                        "nodeType": "Return",
                        "src": "7695:22:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5384,
              "nodeType": "StructuredDocumentation",
              "src": "6511:120:16",
              "text": " @notice Returns the next event to process.\n @param assetId id of the asset\n @return event"
            },
            "functionSelector": "b8282041",
            "id": 5482,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextScheduledEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5388,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6722:8:16"
            },
            "parameters": {
              "id": 5387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5386,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5482,
                  "src": "6667:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5385,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6667:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6666:17:16"
            },
            "returnParameters": {
              "id": 5391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5390,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5482,
                  "src": "6748:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5389,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6748:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6747:9:16"
            },
            "scope": 5716,
            "src": "6636:1153:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4903
            ],
            "body": {
              "id": 5657,
              "nodeType": "Block",
              "src": "8202:1921:16",
              "statements": [
                {
                  "assignments": [
                    5495
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5495,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8212:19:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5494,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "8212:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5499,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5496,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "8234:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 5498,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5497,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5485,
                      "src": "8241:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8234:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8212:37:16"
                },
                {
                  "assignments": [
                    5501
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5501,
                      "mutability": "mutable",
                      "name": "nextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8259:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5500,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8259:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5505,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5503,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5485,
                        "src": "8304:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5502,
                      "name": "getNextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6981,
                      "src": "8285:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 5504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8285:27:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8259:53:16"
                },
                {
                  "assignments": [
                    5507
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5507,
                      "mutability": "mutable",
                      "name": "nextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8322:25:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5506,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8322:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5515,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5508,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5495,
                          "src": "8350:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5509,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "8350:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5510,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "events",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7857,
                      "src": "8350:21:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
                        "typeString": "mapping(uint256 => bytes32)"
                      }
                    },
                    "id": 5514,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5511,
                          "name": "asset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5495,
                          "src": "8372:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                            "typeString": "struct Asset storage pointer"
                          }
                        },
                        "id": 5512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "schedule",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4441,
                        "src": "8372:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                          "typeString": "struct Schedule storage ref"
                        }
                      },
                      "id": 5513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextScheduleIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7861,
                      "src": "8372:32:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8350:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8322:83:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5516,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5495,
                            "src": "8420:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                              "typeString": "struct Asset storage pointer"
                            }
                          },
                          "id": 5517,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "schedule",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4441,
                          "src": "8420:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                            "typeString": "struct Schedule storage ref"
                          }
                        },
                        "id": 5518,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7859,
                        "src": "8420:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8445:1:16",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8420:26:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "id": 5526,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5521,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5501,
                        "src": "8450:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8477:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 5523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8469:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5522,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8469:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8469:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "8450:29:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8420:59:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5533,
                  "nodeType": "IfStatement",
                  "src": "8416:82:16",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8496:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 5529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8488:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": {
                          "id": 5528,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8488:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8488:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "functionReturnParameters": 5493,
                    "id": 5532,
                    "nodeType": "Return",
                    "src": "8481:17:16"
                  }
                },
                {
                  "assignments": [
                    5535,
                    5537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5535,
                      "mutability": "mutable",
                      "name": "eventTypeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8510:34:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5534,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "8510:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5537,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextCyclicEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8546:35:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8546:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5539,
                        "name": "nextCyclicEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5501,
                        "src": "8597:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5538,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "8585:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8585:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8509:104:16"
                },
                {
                  "assignments": [
                    5543,
                    5545
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5543,
                      "mutability": "mutable",
                      "name": "eventTypeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8624:36:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5542,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "8624:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5545,
                      "mutability": "mutable",
                      "name": "scheduleTimeNextScheduleEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5657,
                      "src": "8662:37:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5544,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8662:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5549,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5547,
                        "name": "nextScheduleEvent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5507,
                        "src": "8715:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5546,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "8703:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 5548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8703:30:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8623:110:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 5552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5550,
                      "name": "nextCyclicEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5501,
                      "src": "8834:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5551,
                      "name": "nextScheduleEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5507,
                      "src": "8853:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8834:36:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5587,
                  "nodeType": "IfStatement",
                  "src": "8830:399:16",
                  "trueBody": {
                    "id": 5586,
                    "nodeType": "Block",
                    "src": "8872:357:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5553,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "8886:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5557,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "8886:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5558,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastScheduleTimeOfCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7853,
                              "src": "8886:44:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                "typeString": "mapping(enum EventType => uint256)"
                              }
                            },
                            "id": 5559,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5556,
                              "name": "eventTypeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "8931:24:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8886:70:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5560,
                            "name": "scheduleTimeNextCyclicEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5537,
                            "src": "8959:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8886:100:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5562,
                        "nodeType": "ExpressionStatement",
                        "src": "8886:100:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5563,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9004:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5564,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9004:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5565,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "9004:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5566,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9040:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5567,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9040:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5568,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7859,
                            "src": "9040:21:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9004:57:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5575,
                        "nodeType": "IfStatement",
                        "src": "9000:80:16",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9078:1:16",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9070:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 5570,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "9070:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9070:10:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "functionReturnParameters": 5493,
                          "id": 5574,
                          "nodeType": "Return",
                          "src": "9063:17:16"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5576,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "9094:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5579,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "9094:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5580,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "9094:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9130:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9094:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5583,
                        "nodeType": "ExpressionStatement",
                        "src": "9094:37:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5584,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5501,
                          "src": "9203:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5585,
                        "nodeType": "Return",
                        "src": "9196:22:16"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5588,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9326:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9359:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9326:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5591,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5537,
                                    "src": "9365:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9396:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "9365:32:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5594,
                                    "name": "scheduleTimeNextCyclicEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5537,
                                    "src": "9401:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5595,
                                    "name": "scheduleTimeNextScheduleEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5545,
                                    "src": "9431:29:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9401:59:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "9365:95:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 5598,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9364:97:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9326:135:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5600,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9325:137:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5601,
                              "name": "scheduleTimeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "9496:27:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5602,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9527:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9496:60:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5605,
                                  "name": "eventTypeNextCyclicEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5535,
                                  "src": "9591:24:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5604,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "9576:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9576:40:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5608,
                                  "name": "eventTypeNextScheduleEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5543,
                                  "src": "9634:26:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                ],
                                "id": 5607,
                                "name": "getEpochOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24757,
                                "src": "9619:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                  "typeString": "function (enum EventType) pure returns (uint256)"
                                }
                              },
                              "id": 5609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9619:42:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9576:85:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9496:165:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 5612,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9478:197:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9325:350:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5655,
                    "nodeType": "Block",
                    "src": "9853:264:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5627,
                              "name": "scheduleTimeNextScheduleEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "9871:29:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9904:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9871:34:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5630,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9909:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5631,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9909:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5632,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "nextScheduleIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7861,
                              "src": "9909:32:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5633,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9945:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5634,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9945:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5635,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7859,
                              "src": "9945:21:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9909:57:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9871:95:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5644,
                        "nodeType": "IfStatement",
                        "src": "9867:151:16",
                        "trueBody": {
                          "id": 5643,
                          "nodeType": "Block",
                          "src": "9968:50:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10001:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9993:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 5638,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9993:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9993:10:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5493,
                              "id": 5642,
                              "nodeType": "Return",
                              "src": "9986:17:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5645,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5495,
                                "src": "10031:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                  "typeString": "struct Asset storage pointer"
                                }
                              },
                              "id": 5648,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "schedule",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4441,
                              "src": "10031:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                "typeString": "struct Schedule storage ref"
                              }
                            },
                            "id": 5649,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nextScheduleIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7861,
                            "src": "10031:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10067:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10031:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5652,
                        "nodeType": "ExpressionStatement",
                        "src": "10031:37:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5653,
                          "name": "nextScheduleEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5507,
                          "src": "10089:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5654,
                        "nodeType": "Return",
                        "src": "10082:24:16"
                      }
                    ]
                  },
                  "id": 5656,
                  "nodeType": "IfStatement",
                  "src": "9308:809:16",
                  "trueBody": {
                    "id": 5626,
                    "nodeType": "Block",
                    "src": "9686:161:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5614,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5495,
                                  "src": "9700:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                    "typeString": "struct Asset storage pointer"
                                  }
                                },
                                "id": 5618,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "schedule",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4441,
                                "src": "9700:14:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                  "typeString": "struct Schedule storage ref"
                                }
                              },
                              "id": 5619,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastScheduleTimeOfCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7853,
                              "src": "9700:44:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                "typeString": "mapping(enum EventType => uint256)"
                              }
                            },
                            "id": 5620,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5617,
                              "name": "eventTypeNextCyclicEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "9745:24:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9700:70:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5621,
                            "name": "scheduleTimeNextCyclicEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5537,
                            "src": "9773:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9700:100:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5623,
                        "nodeType": "ExpressionStatement",
                        "src": "9700:100:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5624,
                          "name": "nextCyclicEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5501,
                          "src": "9821:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5493,
                        "id": 5625,
                        "nodeType": "Return",
                        "src": "9814:22:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5483,
              "nodeType": "StructuredDocumentation",
              "src": "7795:259:16",
              "text": " @notice Increments the index of a schedule of an asset.\n (if max index is reached the index will be left unchanged)\n @dev Can only be updated by the assets actor or by an authorized account.\n @param assetId id of the asset"
            },
            "functionSelector": "c3b6e7c2",
            "id": 5658,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5489,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5485,
                    "src": "8163:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5490,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5488,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "8149:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8149:22:16"
              }
            ],
            "name": "popNextScheduledEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5487,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8132:8:16"
            },
            "parameters": {
              "id": 5486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5485,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5658,
                  "src": "8090:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5484,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8090:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8089:17:16"
            },
            "returnParameters": {
              "id": 5493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5492,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5658,
                  "src": "8189:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5491,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8188:9:16"
            },
            "scope": 5716,
            "src": "8059:2064:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4914
            ],
            "body": {
              "id": 5687,
              "nodeType": "Block",
              "src": "10474:147:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5671,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4477,
                                "src": "10505:6:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                                  "typeString": "mapping(bytes32 => struct Asset storage ref)"
                                }
                              },
                              "id": 5673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5672,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5661,
                                "src": "10512:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10505:15:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Asset_$4466_storage",
                                "typeString": "struct Asset storage ref"
                              }
                            },
                            "id": 5674,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "settlement",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4465,
                            "src": "10505:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                              "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                            }
                          },
                          "id": 5676,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5675,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5663,
                            "src": "10532:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10505:34:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                            "typeString": "struct Settlement storage ref"
                          }
                        },
                        "id": 5677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isSettled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4430,
                        "src": "10505:44:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5678,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4477,
                                "src": "10563:6:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                                  "typeString": "mapping(bytes32 => struct Asset storage ref)"
                                }
                              },
                              "id": 5680,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5679,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5661,
                                "src": "10570:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10563:15:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Asset_$4466_storage",
                                "typeString": "struct Asset storage ref"
                              }
                            },
                            "id": 5681,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "settlement",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4465,
                            "src": "10563:26:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                              "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                            }
                          },
                          "id": 5683,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5682,
                            "name": "_event",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5663,
                            "src": "10590:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10563:34:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                            "typeString": "struct Settlement storage ref"
                          }
                        },
                        "id": 5684,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "payoff",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4432,
                        "src": "10563:41:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 5685,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10491:123:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                      "typeString": "tuple(bool,int256)"
                    }
                  },
                  "functionReturnParameters": 5670,
                  "id": 5686,
                  "nodeType": "Return",
                  "src": "10484:130:16"
                }
              ]
            },
            "documentation": {
              "id": 5659,
              "nodeType": "StructuredDocumentation",
              "src": "10129:201:16",
              "text": " @notice Returns true if an event of an assets schedule was settled\n @param assetId id of the asset\n @param _event event (encoded)\n @return true if event was settled"
            },
            "functionSelector": "ba4d2d28",
            "id": 5688,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventSettled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5665,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10430:8:16"
            },
            "parameters": {
              "id": 5664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5661,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10359:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5660,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10359:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5663,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10376:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10376:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10358:33:16"
            },
            "returnParameters": {
              "id": 5670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5667,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10456:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5666,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10456:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5669,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5688,
                  "src": "10462:6:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 5668,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10462:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10455:14:16"
            },
            "scope": 5716,
            "src": "10335:286:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4923
            ],
            "body": {
              "id": 5714,
              "nodeType": "Block",
              "src": "10979:102:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5702,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4477,
                            "src": "10989:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                              "typeString": "mapping(bytes32 => struct Asset storage ref)"
                            }
                          },
                          "id": 5704,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5703,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5691,
                            "src": "10996:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10989:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$4466_storage",
                            "typeString": "struct Asset storage ref"
                          }
                        },
                        "id": 5705,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlement",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4465,
                        "src": "10989:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                          "typeString": "mapping(bytes32 => struct Settlement storage ref)"
                        }
                      },
                      "id": 5707,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5706,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5693,
                        "src": "11016:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10989:34:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                        "typeString": "struct Settlement storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11050:4:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5710,
                          "name": "_payoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5695,
                          "src": "11064:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 5708,
                        "name": "Settlement",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4433,
                        "src": "11026:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Settlement_$4433_storage_ptr_$",
                          "typeString": "type(struct Settlement storage pointer)"
                        }
                      },
                      "id": 5711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "isSettled",
                        "payoff"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11026:48:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Settlement_$4433_memory_ptr",
                        "typeString": "struct Settlement memory"
                      }
                    },
                    "src": "10989:85:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Settlement_$4433_storage",
                      "typeString": "struct Settlement storage ref"
                    }
                  },
                  "id": 5713,
                  "nodeType": "ExpressionStatement",
                  "src": "10989:85:16"
                }
              ]
            },
            "documentation": {
              "id": 5689,
              "nodeType": "StructuredDocumentation",
              "src": "10627:201:16",
              "text": " @notice Mark an event as settled\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param _event event (encoded) to be marked as settled"
            },
            "functionSelector": "de07a173",
            "id": 5715,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5699,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5691,
                    "src": "10966:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5700,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5698,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "10952:12:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10952:22:16"
              }
            ],
            "name": "markEventAsSettled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5697,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10935:8:16"
            },
            "parameters": {
              "id": 5696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5691,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10861:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5690,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10861:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5693,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10878:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5692,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10878:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5695,
                  "mutability": "mutable",
                  "name": "_payoff",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5715,
                  "src": "10894:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 5694,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10894:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10860:49:16"
            },
            "returnParameters": {
              "id": 5701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10979:0:16"
            },
            "scope": 5716,
            "src": "10833:248:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5717,
        "src": "573:10838:16"
      }
    ],
    "src": "41:11371:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.704Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "getEventAtIndex(bytes32,uint256)": {
        "params": {
          "assetId": "id of the asset",
          "index": "index of the event to return"
        },
        "returns": {
          "_0": "Event"
        }
      },
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getNextScheduleIndex(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Index"
        }
      },
      "getNextScheduledEvent(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "event"
        }
      },
      "getSchedule(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "the schedule"
        }
      },
      "getScheduleLength(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Length of the schedule"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "isEventSettled(bytes32,bytes32)": {
        "params": {
          "_event": "event (encoded)",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if event was settled"
        }
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "_event": "event (encoded) to be marked as settled",
          "assetId": "id of the asset"
        }
      },
      "popNextScheduledEvent(bytes32)": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      }
    },
    "title": "ScheduleRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "getEventAtIndex(bytes32,uint256)": {
        "notice": "Returns an event for a given position (index) in a schedule of a given asset."
      },
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getNextScheduleIndex(bytes32)": {
        "notice": "Returns the index of the next event to be processed for a schedule of an asset."
      },
      "getNextScheduledEvent(bytes32)": {
        "notice": "Returns the next event to process."
      },
      "getNextUnderlyingEvent(bytes32)": {
        "notice": "If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event."
      },
      "getSchedule(bytes32)": {
        "notice": "Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)"
      },
      "getScheduleLength(bytes32)": {
        "notice": "Returns the length of a schedule of a given asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "isEventSettled(bytes32,bytes32)": {
        "notice": "Returns true if an event of an assets schedule was settled"
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "notice": "Mark an event as settled"
      },
      "popNextScheduledEvent(bytes32)": {
        "notice": "Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)"
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      }
    },
    "version": 1
  }
}