{
  "contractName": "CERTFEngine",
  "abi": [
    {
      "inputs": [],
      "name": "MAX_CYCLE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_EVENT_SCHEDULE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ONE_POINT_ZERO",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "eomc",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "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": "cycle",
          "type": "tuple"
        }
      ],
      "name": "adjustEndOfMonthConvention",
      "outputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "bdc",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "computeEventTimeForEvent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "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": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractType",
      "outputs": [
        {
          "internalType": "enum ContractType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "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"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "externalData",
          "type": "bytes32"
        }
      ],
      "name": "computeStateForEvent",
      "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": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "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"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "externalData",
          "type": "bytes32"
        }
      ],
      "name": "computePayoffForEvent",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "computeInitialState",
      "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": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "segmentStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "segmentEnd",
          "type": "uint256"
        }
      ],
      "name": "computeNonCyclicScheduleSegment",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "segmentStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "segmentEnd",
          "type": "uint256"
        },
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "computeCyclicScheduleSegment",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "lastScheduleTime",
          "type": "uint256"
        },
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "computeNextCyclicEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "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": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "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": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "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": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "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": "contractReference_1",
              "type": "tuple"
            },
            {
              "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": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "",
          "type": "tuple"
        },
        {
          "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"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "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"
        }
      ],
      "name": "isEventScheduled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_CYCLE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EVENT_SCHEDULE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ONE_POINT_ZERO\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"eomc\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"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\":\"cycle\",\"type\":\"tuple\"}],\"name\":\"adjustEndOfMonthConvention\",\"outputs\":[{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"segmentStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segmentEnd\",\"type\":\"uint256\"},{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"computeCyclicScheduleSegment\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"bdc\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"computeEventTimeForEvent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"computeInitialState\",\"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\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"lastScheduleTime\",\"type\":\"uint256\"},{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"computeNextCyclicEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"segmentStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"segmentEnd\",\"type\":\"uint256\"}],\"name\":\"computeNonCyclicScheduleSegment\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"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\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"externalData\",\"type\":\"bytes32\"}],\"name\":\"computePayoffForEvent\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"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\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"externalData\",\"type\":\"bytes32\"}],\"name\":\"computeStateForEvent\",\"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\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractType\",\"outputs\":[{\"internalType\":\"enum ContractType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"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\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"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\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"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\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"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\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"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\":\"contractReference_1\",\"type\":\"tuple\"},{\"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\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"\",\"type\":\"tuple\"},{\"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\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"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\"}],\"name\":\"isEventScheduled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All numbers except unix timestamp are represented as multiple of 10 ** 18\",\"kind\":\"dev\",\"methods\":{\"adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))\":{\"details\":\"The following is considered to dertermine if schedule dates are shifted to the end of month: - The convention SD (same day) means not adjusting, EM (end of month) means adjusting - Dates are only shifted if the schedule start date is an end-of-month date - Dates are only shifted if the schedule cycle is based on an \\\"M\\\" period unit or multiple thereof\",\"params\":{\"cycle\":\"the cycle struct\",\"eomc\":\"the end of month convention to adjust\",\"startTime\":\"timestamp of the cycle start\"},\"returns\":{\"_0\":\"the adjusted end of month convention\"}},\"computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256,uint8)\":{\"params\":{\"eventType\":\"eventType of the cyclic schedule\",\"segmentEnd\":\"end timestamp of the segement\",\"segmentStart\":\"start timestamp of the segment\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"event schedule segment\"}},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"details\":\"For optimization reasons not located in EventUtil by applying the BDC specified in the terms\"},\"computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"params\":{\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the initial state of the contract\"}},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint8)\":{\"params\":{\"eventType\":\"eventType of the cyclic schedule\",\"lastScheduleTime\":\"last occurrence of cyclic event\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"event schedule segment\"}},\"computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256)\":{\"params\":{\"segmentEnd\":\"end timestamp of the segement\",\"segmentStart\":\"start timestamp of the segment\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"segment of the non-cyclic schedule\"}},\"computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"params\":{\"_event\":\"event for which the payoff should be evaluated\",\"externalData\":\"external data needed for POF evaluation (e.g. fxRate)\",\"state\":\"current state of the contract\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the payoff of the event\"}},\"computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"params\":{\"_event\":\"event to be applied to the contract state\",\"externalData\":\"external data needed for STF evaluation (e.g. rate for RR events)\",\"state\":\"current state of the contract\",\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"the resulting contract state\"}},\"isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"returns\":{\"_0\":\"boolean indicating whether event is still scheduled\"}}},\"title\":\"CERTFEngine\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))\":{\"notice\":\"This function makes an adjustment on the end of month convention.\"},\"computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256,uint8)\":{\"notice\":\"Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps.\"},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"notice\":\"Returns the event time for a given schedule time\"},\"computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"notice\":\"Initialize contract state space based on the contract terms.\"},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint8)\":{\"notice\":\"Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps.\"},\"computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256)\":{\"notice\":\"Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps.\"},\"computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"notice\":\"Evaluates the payoff for an event under the current state of the contract.\"},\"computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)\":{\"notice\":\"Applys an event to the current state of a contract and returns the resulting contract state.\"},\"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\"},\"isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Verifies that the provided event is still scheduled under the terms, the current state of the contract and the current state of the underlying. param _event event for which to check if its still scheduled param terms terms of the contract param state current state of the contract param hasUnderlying boolean indicating whether the contract has an underlying contract param underlyingState state of the underlying (empty state object if non-existing)\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a CERTF contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@atpar/actus-solidity/contracts/Engines/CERTF/CERTFEngine.sol\":\"CERTFEngine\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@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/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/ContractRoleConventions.sol\":{\"keccak256\":\"0x0e86e103607557626fc092ae2c9e2ea643115640a0b212ec34ef074edb3cc048\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://91386c9f6d3f83f6712eb0cb6378cfb7de4ef9745280e4ac7e12bad1dd97c4b3\",\"dweb:/ipfs/QmSJ9EoPorkSrhKSNhM9WBYMTtYuLqjHCpPThf8KHWRp7r\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/DayCountConventions.sol\":{\"keccak256\":\"0x7147f1662bbd8abd04dffe454db3743828bae4476621ff158c94dd967b8573e1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d3be9ed484ad75d87b485d7c779d72b980c711735ed7e2ebc9622949a51857a0\",\"dweb:/ipfs/QmVdyMD4PW8wMdhbxoQBqAVNNN7fRwvpTVpCWKBLbLoqmh\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/EndOfMonthConventions.sol\":{\"keccak256\":\"0xe004912bd32ef22ac6ee91f35a3855b06492d8a89f585f1a508c1c26349fd880\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e70d558bee746b797cdcadf84d5c9cd1b77fc6e99a089524ecaeb91201c71dcd\",\"dweb:/ipfs/QmcxpSKn5ZG4DPrSkm1Pxd21So6NKcHdiX5zfpExD5eLpv\"]},\"@atpar/actus-solidity/contracts/Core/Core.sol\":{\"keccak256\":\"0x0863cccef5f0e90e295c9b913a7d18b7e029cbd33179d4d23b2e5c8479b2077b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d7a9fb13a29e64eaad1e97129952d23c6be6e2c5224dfdd0b62766330b05efd1\",\"dweb:/ipfs/QmUyTmuSfv3kDw4wGrP7ZemJJcxWRNRPYvwNc3WEC1YWoR\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/CycleUtils.sol\":{\"keccak256\":\"0x230700c45141dbc7973f813d1eae8ea2fe3a804489b7f29f46d44ac5d5f12048\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bebe3ddd62e9c2ede6a298ef956b8315198da601223a3900d07490dab3b7f1\",\"dweb:/ipfs/QmWyQxUsCjGMRKmxseE61qaipeqHVcZ6tLhVXvLfKnFkxo\"]},\"@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/Core/Utils/Utils.sol\":{\"keccak256\":\"0xeb3b016061350187b61618b1f0fed88e3dcc6feb8098a873ac55ae861a61a280\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://eff5591bd3ea0d66b85c0d0ed9d92388946f6ee67e8079656a828cc7a94d6bf1\",\"dweb:/ipfs/QmZPfJpENC62LEZWqWDnu8LmTrrv6CDtJkbTdQtdNpuDds\"]},\"@atpar/actus-solidity/contracts/Engines/CERTF/CERTFEngine.sol\":{\"keccak256\":\"0x943d0a811b5cd3483a4fe81d33352a0b216d4d8ec4f4a4ac44b9ebb12522b331\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e413c54b20f1aa50cbc8e9a1e69d05adb6ec47655e2db89b83636cf98dce0fa0\",\"dweb:/ipfs/QmVnqfGnZi7Gu78nAUzENgYhj6dTmfqcW5iAwskSG9rcdy\"]},\"@atpar/actus-solidity/contracts/Engines/CERTF/CERTFPOF.sol\":{\"keccak256\":\"0x4265be41e211ab52b8b21f9b95fb6a08986b628fc1c8306c3a8860e09f4ceffb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e8202bb4eca3954d238a620e3ca3acc078e2c5840014ebde678a8c07355a9fe9\",\"dweb:/ipfs/QmXYpBQaVtUnb9ZGNc6r5UySERWFFoTtDv8Ww1TUcuXT3N\"]},\"@atpar/actus-solidity/contracts/Engines/CERTF/CERTFSTF.sol\":{\"keccak256\":\"0xd3bfa863da28b95bd3dfee36090dfbea1544c324fcc5f6464f8b909fcbb3e2b1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b3411e7468000110f78ed58878543a4206ebe31a34301ccc58570fe3dca01c5e\",\"dweb:/ipfs/QmNiNfEbNHsUFZZmAi8kCPYY9ECe7arXNxkL6HN6X3fk4P\"]},\"@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol\":{\"keccak256\":\"0xcfa69bbf1c8ebbef45acfd677b6fdc66260fb53655d4dd4bea42715cc1311e38\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://404149e103a2a872f174802bf3d54beaf29b17a2728edf5d03484bf9ad9f8060\",\"dweb:/ipfs/QmTCa6rDNhkZwvMXp6TdRJJbNrWcVrDPoXvJ6dnXEAoTUB\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xaa0e11a791bc975d581a4f5b7a8d9c16a880a354c89312318ae072ae3e740409\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://982d8b344f76193834260436d74c81e5a8f9e89106bb4cd72bbaabda4f3f59c2\",\"dweb:/ipfs/QmSrvP5TkQRhKDVCTpsV3uaKLBhkt7PjUY89vdtM9o5ybK\"]},\"openzeppelin-solidity/contracts/math/SignedSafeMath.sol\":{\"keccak256\":\"0xb2db870ccd849f107e3196d346fc4983eb9a041d117b9ff3a53950df606658b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0add6dbdceb130d5cd140b8106e7884606dce98e817b3547e0967b76921bd473\",\"dweb:/ipfs/QmRUhmQKxoVFhHaQKHPNUYeSty1rw9TDcDPB5PdDUkqvbg\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506138b2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063c40c5a98116100ad578063ebbf552611610071578063ebbf55261461025c578063edc0465f14610206578063f52355861461027c578063f5586e051461028f578063ffcbfc65146102a257610121565b8063c40c5a9814610206578063cb2ef6f71461020e578063d115612f14610223578063e05a66e014610236578063e726d6801461024957610121565b80636f37e55b116100f45780636f37e55b146101a257806372540003146101aa578063811322fb146101cb578063aaf5eb68146101de578063bccf8f31146101e657610121565b8063179331f3146101265780631a2e165d1461014f57806334a64ea21461016f5780636021c23b14610182575b600080fd5b610139610134366004612b47565b6102b5565b60405161014691906130de565b60405180910390f35b61016261015d366004612a7b565b610385565b60405161014691906130c1565b61016261017d366004612c2f565b6103ac565b610195610190366004612c72565b61060b565b6040516101469190613072565b61016261078b565b6101bd6101b8366004612a63565b610797565b6040516101469291906130ec565b6101626101d9366004612b85565b6107c0565b6101626107d6565b6101f96101f4366004612bcc565b6107db565b604051610146919061372b565b610162610839565b61021661083e565b60405161014691906130ca565b610195610231366004612ca8565b610843565b610162610244366004612ba1565b610d85565b61016261025736600461303e565b610da5565b61026f61026a366004612ac5565b610ef8565b60405161014691906130b6565b6101f961028a366004612be8565b610f03565b61016261029d36600461303e565b610f3c565b6101626102b0366004612be8565b610fa7565b600060018460018111156102c557fe5b1415610341576102d48361106b565b6102dd8461108d565b14801561032c57506002826020015160058111156102f757fe5b1480610312575060038260200151600581111561031057fe5b145b8061032c575060048260200151600581111561032a57fe5b145b156103395750600161037e565b50600061037e565b600084600181111561034f57fe5b141561035d5750600061037e565b60405162461bcd60e51b8152600401610375906135db565b60405180910390fd5b9392505050565b60008061039186610797565b9150506103a081868686610da5565b9150505b949350505050565b6000601582601c8111156103bc57fe5b141561042557610200840135156104255760006104016103e53687900387016105a08801612f0b565b6103f560c0880160a08901612b2b565b8761020001358761109c565b90508061041257506000905061037e565b61041d601582610d85565b91505061037e565b601682601c81111561043357fe5b14156104a157610200840135156104a157600061045c6103e53687900387016105a08801612f0b565b90508061046d57506000905061037e565b600061048b6104853688900388016103808901612f26565b836110fc565b9050610498601582610d85565b9250505061037e565b601782601c8111156104af57fe5b1415610510576101c0840135156105105760006104f46104d83687900387016104a08801612f0b565b6104e860c0880160a08901612b2b565b876101c001358761109c565b90508061050557506000905061037e565b61041d601782610d85565b601882601c81111561051e57fe5b141561057d576101c08401351561057d5760006105476104d83687900387016104a08801612f0b565b90508061055857506000905061037e565b60006105706104853688900388016103808901612f26565b9050610498601882610d85565b601a82601c81111561058b57fe5b1415610601576101c0840135156106015760006105b46104d83687900387016104a08801612f0b565b9050806105c557506000905061037e565b8461018001358114156105dc57506000905061037e565b60006105f46104853688900388016104408901612f26565b9050610498601a82610d85565b5060009392505050565b60606106156127fe565b60006101a08601351561066057610632866101a001358686611228565b15610660576106476001876101a00135610d85565b828261ffff166078811061065757fe5b60200201526001015b610160860135156106a95761067b8661016001358686611228565b156106a9576106906002876101600135610d85565b828261ffff16607881106106a057fe5b60200201526001015b610180860135156106f7576106c48661018001358686611228565b1515600114156106f7576106de6014876101800135610d85565b828261ffff16607881106106ee57fe5b60200201526001015b60608161ffff1667ffffffffffffffff8111801561071457600080fd5b5060405190808252806020026020018201604052801561073e578160200160208202803683370190505b50905060005b8261ffff168110156107805783816078811061075c57fe5b602002015182828151811061076d57fe5b6020908102919091010152600101610744565b509695505050505050565b670de0b6b3a764000081565b6000808060f884901c601c8111156107ab57fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156107ce57fe5b90505b919050565b601281565b6107e361281d565b6107eb61281d565b600061020082018190526101e08201819052670de0b6b3a764000061024083018190526102608301526101a084013560c0830152610220820181905281526101409092013560208301525090565b607881565b601290565b606061084d6127fe565b6000601584601c81111561085d57fe5b14156109705761020087013515610970576108766127fe565b6108da88610200013560008a6101800135116108925787610899565b8961018001355b6108ac368c90038c016105a08d01612f0b565b6108bc60c08d0160a08e01612b2b565b60008d6101800135116108d05760006108d3565b60015b8c8c611257565b905060005b60788160ff16101561096d57818160ff16607881106108fa57fe5b60200201516109085761096d565b610926828260ff166078811061091a57fe5b60200201518989611228565b61092f57610965565b61094d6015838360ff166078811061094357fe5b6020020151610d85565b84846078811061095957fe5b60200201526001909201915b6001016108df565b50505b601684601c81111561097e57fe5b1415610a585761020087013515610a58576109976127fe565b6109b388610200013560008a6101800135116108925787610899565b905060005b60788160ff161015610a5557818160ff16607881106109d357fe5b60200201516109e157610a55565b6000610a126109f9368c90038c016103808d01612f26565b848460ff1660788110610a0857fe5b60200201516110fc565b9050610a1f818a8a611228565b610a295750610a4d565b610a34601582610d85565b858560788110610a4057fe5b6020020152506001909201915b6001016109b8565b50505b601784601c811115610a6657fe5b1415610b35576101c087013515610b3557610a7f6127fe565b610ab5886101c0013560008a610180013511610a9b5787610aa2565b8961018001355b6108ac368c90038c016104a08d01612f0b565b905060005b60788160ff161015610b3257818160ff1660788110610ad557fe5b6020020151610ae357610b32565b610af5828260ff166078811061091a57fe5b610afe57610b2a565b610b126017838360ff166078811061094357fe5b848460788110610b1e57fe5b60200201526001909201915b600101610aba565b50505b601884601c811115610b4357fe5b1415610c04576101c087013515610c0457610b5c6127fe565b610b78886101c0013560008a610180013511610a9b5787610aa2565b905060005b60788160ff161015610c0157818160ff1660788110610b9857fe5b6020020151610ba657610c01565b6000610bbe6109f9368c90038c016103808d01612f26565b9050610bcb818a8a611228565b610bd55750610bf9565b610be0601882610d85565b858560788110610bec57fe5b6020020152506001909201915b600101610b7d565b50505b601a84601c811115610c1257fe5b1415610cf8576101c087013515610cf857610c2b6127fe565b610c47886101c0013560008a610180013511610a9b5787610aa2565b905060005b60788160ff161015610cf557818160ff1660788110610c6757fe5b6020020151610c7557610cf5565b886101800135828260ff1660788110610c8a57fe5b60200201511415610c9a57610ced565b6000610cb26109f9368c90038c016104408d01612f26565b9050610cbf818a8a611228565b610cc95750610ced565b610cd4601a82610d85565b858560788110610ce057fe5b6020020152506001909201915b600101610c4c565b50505b60608167ffffffffffffffff81118015610d1157600080fd5b50604051908082528060200260200182016040528015610d3b578160200160208202803683370190505b50905060005b82811015610d7957838160788110610d5557fe5b6020020151828281518110610d6657fe5b6020908102919091010152600101610d41565b50979650505050505050565b60008160f884601c811115610d9657fe5b60ff16901b1790505b92915050565b600081851415610db65750836103a4565b6001846008811115610dc457fe5b1480610ddb57506003846008811115610dd957fe5b145b15610df157610dea858461143c565b90506103a4565b6002846008811115610dff57fe5b1480610e1657506004846008811115610e1457fe5b145b15610e5a576000610e27868561143c565b9050610e3286611498565b610e3b82611498565b1415610e485790506103a4565b610e5286856114af565b9150506103a4565b6005846008811115610e6857fe5b1480610e7f57506007846008811115610e7d57fe5b145b15610e8e57610dea85846114af565b6006846008811115610e9c57fe5b1480610eb357506008846008811115610eb157fe5b145b15610eef576000610ec486856114af565b9050610ecf86611498565b610ed882611498565b1415610ee55790506103a4565b610e52868561143c565b50929392505050565b600195945050505050565b610f0b61281d565b610f33610f1d36879003870187612cf4565b610f2c36879003870187612f41565b85856114fd565b95945050505050565b60006003846008811115610f4c57fe5b1480610f6357506004846008811115610f6157fe5b145b80610f7957506007846008811115610f7757fe5b145b80610f8f57506008846008811115610f8d57fe5b145b15610f9b5750836103a4565b610f3385858585610da5565b600080610fbc61012087016101008801612a48565b6001600160a01b0316141580156110065750610fe061012086016101008701612a48565b6001600160a01b0316610ffa610100870160e08801612a48565b6001600160a01b031614155b1561104357610dea8261103761102136899003890189612cf4565b61103036899003890189612f41565b8787611677565b9063ffffffff6117dc16565b610f3361105536879003870187612cf4565b61106436879003870187612f41565b8585611677565b6000808061107e62015180855b0461187a565b50915091506103a48282611910565b60006103a46201518083611078565b606084015160009015806110ae575081155b156110ba5750816103a4565b60016110c78585886102b5565b60018111156110d257fe5b146110e8576110e385836001611996565b610f33565b610f336110f786846001611996565b611ac7565b600080808460200151600581111561111057fe5b141561113057835161112990849063ffffffff611b0016565b905061037e565b60018460200151600581111561114257fe5b141561115e57835161112990849060070263ffffffff611b0016565b60028460200151600581111561117057fe5b141561118957835161112990849063ffffffff611b1516565b60038460200151600581111561119b57fe5b14156111b757835161112990849060030263ffffffff611b1516565b6004846020015160058111156111c957fe5b14156111e557835161112990849060060263ffffffff611b1516565b6005846020015160058111156111f757fe5b141561121057835161112990849063ffffffff611b8f16565b60405162461bcd60e51b81526004016103759061357e565b60008183111561123a5750600061037e565b83831115801561124a5750818411155b156106015750600161037e565b61125f6127fe565b6112676127fe565b60608701516000906112cf5761127e8a8686611228565b15611299578982826078811061129057fe5b60200201526001015b6112a4898686611228565b156112c757600186151514156112c757888282607881106112c157fe5b60200201525b509050611431565b896000806112de8a848d6102b5565b90505b8b83101561136e576112f4838989611228565b1561133257607684106113195760405162461bcd60e51b815260040161037590613157565b8285856078811061132657fe5b60200201526001909301925b60019182019181600181111561134457fe5b14611359576113548b8e84611996565b611367565b6113676110f78c8f85611996565b92506112e1565b6001891515141561139c576113848c8989611228565b1561139c578b85856078811061139657fe5b60200201525b6000841180156113b957506113b985600186036078811061091a57fe5b156114295760008b6040015160018111156113d057fe5b1480156113dd5750600184115b80156113e95750828c14155b15611429578484607881106113fa57fe5b602002015185600186036078811061140e57fe5b602002015284846078811061141f57fe5b6020020160008152505b509293505050505b979650505050505050565b6000600182600181111561144c57fe5b14156114915761145b83611bb6565b600614156114755761146e836002611b00565b9050610d9f565b61147e83611bb6565b600714156114915761146e836001611b00565b5090919050565b60006114a76201518083611078565b509392505050565b600060018260018111156114bf57fe5b1415611491576114ce83611bb6565b600614156114e15761146e836001611bc9565b6114ea83611bb6565b600714156114915761146e836002611bc9565b61150561281d565b60008061151185610797565b9092509050600182601c81111561152457fe5b141561153f5761153687878387611bde565b925050506103a4565b600282601c81111561154d57fe5b141561155f5761153687878387611c01565b601582601c81111561156d57fe5b141561157f5761153687878387611c15565b601682601c81111561158d57fe5b141561159f5761153687878387611caa565b601782601c8111156115ad57fe5b14156115bf5761153687878387611cc6565b601a82601c8111156115cd57fe5b14156115df5761153687878387611d0d565b601882601c8111156115ed57fe5b14156115ff5761153687878387611d26565b601182601c81111561160d57fe5b141561161f5761153687878387611d95565b601482601c81111561162d57fe5b141561163f5761153687878387611db8565b600b82601c81111561164d57fe5b141561165f5761153687878387611dd3565b60405162461bcd60e51b81526004016103759061368a565b600080600061168585610797565b9092509050600182601c81111561169857fe5b14156116a9576000925050506103a4565b601582601c8111156116b757fe5b14156116c8576000925050506103a4565b601782601c8111156116d657fe5b14156116e7576000925050506103a4565b601a82601c8111156116f557fe5b1415611706576000925050506103a4565b601482601c81111561171457fe5b1415611725576000925050506103a4565b600b82601c81111561173357fe5b1415611744576000925050506103a4565b600282601c81111561175257fe5b14156117645761153687878387611ebe565b601682601c81111561177257fe5b14156117845761153687878387611ef7565b601882601c81111561179257fe5b14156117a45761153687878387611f16565b601182601c8111156117b257fe5b14156117c45761153687878387611f35565b60405162461bcd60e51b8152600401610375906131f3565b60008215806117e9575081155b156117f657506000610d9f565b8260001914801561180a5750600160ff1b82145b156118275760405162461bcd60e51b8152600401610375906133b5565b8282028284828161183457fe5b05146118525760405162461bcd60e51b8152600401610375906133b5565b670de0b6b3a76400008105806103a45760405162461bcd60e51b8152600401610375906132ce565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816118d157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806119215750816003145b8061192c5750816005145b806119375750816007145b806119425750816008145b8061194d575081600a145b80611958575081600c145b156119655750601f610d9f565b816002146119755750601e610d9f565b61197e83611f54565b61198957601c61198c565b601d5b60ff169392505050565b60008080856020015160058111156119aa57fe5b14156119c5578451610dea908590850263ffffffff611b0016565b6001856020015160058111156119d757fe5b14156119f5578451610dea908590850260070263ffffffff611b0016565b600285602001516005811115611a0757fe5b1415611a22578451610dea908590850263ffffffff611b1516565b600385602001516005811115611a3457fe5b1415611a52578451610dea908590850260030263ffffffff611b1516565b600485602001516005811115611a6457fe5b1415611a82578451610dea908590850260060263ffffffff611b1516565b600585602001516005811115611a9457fe5b1415611aaf578451610dea908590850263ffffffff611b8f16565b60405162461bcd60e51b8152600401610375906131a5565b600080600080611ad685611f79565b919450925090506000611ae98484611910565b9050611af6848483611f97565b9695505050505050565b620151808102820182811015610d9f57600080fd5b6000808080611b276201518087611078565b600c918801600019810183810494909401965094509250900660010191506000611b518484611910565b905080821115611b5f578091505b62015180870662015180611b74868686611fb1565b0201945086851015611b8557600080fd5b5050505092915050565b6000808080611ba16201518087611078565b9187019450925090506000611b518484611910565b6007620151809091046003010660010190565b620151808102820382811115610d9f57600080fd5b611be661281d565b50506102609290920151610200820152602081019190915290565b611c0961281d565b50506020820152919050565b611c1d61281d565b60018560c001516003811115611c2f57fe5b1415611c9757611c90856102a00151611037876102200151611037611c678960c001518b608001518c602001518d6101800151610f3c565b611c80898c608001518d602001518e6101800151610f3c565b8b606001518c610180015161202d565b6102208501525b505060c082018190526020820152919050565b611cb261281d565b505060006102208301526020820152919050565b611cce61281d565b611cfb8461026001516110378661024001516110378961022001518760001c6117dc90919063ffffffff16565b6101c085015250506020820152919050565b611d1561281d565b506101e08301526020820152919050565b611d2e61281d565b6101e0840151610200850151611d499163ffffffff61212a16565b61020085015260006101e085018190526101c0850152602084018390526060840151831415611d7b5760048452611d8c565b8360a00151831415611d8c57600584525b50919392505050565b611d9d61281d565b5050600061020083015260a082018190526020820152919050565b611dc061281d565b5050606082018190526020820152919050565b611ddb61281d565b60008460400151600014611df3578460400151611e0c565b611e0c8487608001518860200151896101800151610da5565b6102c087015160400151909150839060009015611e47576000611e34896102c00151856110fc565b9050808311611e4557600180895291505b505b876102e00151604001518015611e5b575080155b15611e8a576000611e71896102e00151856110fc565b9050808311611e835760028852611e88565b600388525b505b6040870151611eb257611eac8689608001518a602001518b6101800151610da5565b60408801525b50949695505050505050565b6000611edd8561024001518561020001516117dc90919063ffffffff16565b611eea8660400151612170565b60000b0295945050505050565b6000611edd8461022001518561020001516117dc90919063ffffffff16565b6000611edd846101c00151856101e001516117dc90919063ffffffff16565b6000611edd846101c001518561020001516117dc90919063ffffffff16565b600060048206158015611f6957506064820615155b806107ce57505061019090061590565b60008080611f8a6201518085611078565b9196909550909350915050565b600062015180611fa8858585611fb1565b02949350505050565b60006107b2841015611fc257600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281611ffe57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b60008484101561204f5760405162461bcd60e51b8152600401610375906134aa565b600083600581111561205d57fe5b141561206d57610dea8585612234565b600183600581111561207b57fe5b141561208b57610dea8585612354565b600283600581111561209957fe5b14156120a957610dea858561237f565b60048360058111156120b757fe5b14156120c757610dea858561239e565b60038360058111156120d557fe5b14156120e657610dea85858461245f565b60058360058111156120f457fe5b14156121125760405162461bcd60e51b8152600401610375906133fc565b60405162461bcd60e51b815260040161037590613242565b600081830381831280159061213f5750838113155b80612154575060008312801561215457508381135b61037e5760405162461bcd60e51b815260040161037590613646565b60008082600c81111561217f57fe5b141561218d575060016107d1565b600182600c81111561219b57fe5b14156121aa57506000196107d1565b600682600c8111156121b857fe5b14156121c6575060016107d1565b600782600c8111156121d457fe5b14156121e357506000196107d1565b600282600c8111156121f157fe5b14156121ff575060016107d1565b600382600c81111561220d57fe5b141561221c57506000196107d1565b60405162461bcd60e51b815260040161037590613361565b60008061224084612535565b9050600061224d84612535565b9050600061225a8661254d565b6122665761016d61226a565b61016e5b61ffff1690508183141561229c5761229281612286888861256a565b9063ffffffff61258516565b9350505050610d9f565b60006122a78661254d565b6122b35761016d6122b7565b61016e5b61ffff16905060006122e8836122868a6122e36122db8a600163ffffffff61264116565b600180611f97565b61256a565b90506000612305836122866122ff88600180611f97565b8b61256a565b905061234761232b600161231f888a63ffffffff61266616565b9063ffffffff61266616565b61233b848463ffffffff6126a816565b9063ffffffff6126a816565b9998505050505050505050565b600061037e61016861228662015180612373868863ffffffff61266616565b9063ffffffff6126ee16565b600061037e61016d61228662015180612373868863ffffffff61266616565b60008060008060008060006123b289611f79565b9750955093506123c188611f79565b945092509050601f8614156123d557601e95505b82601f14156123e357601e92505b60006123f5848863ffffffff61212a16565b90506000612409848863ffffffff61212a16565b9050600061241d848863ffffffff61212a16565b905061244f6101686122868561233b61243d87601e63ffffffff61273016565b61233b8761016863ffffffff61273016565b9c9b505050505050505050505050565b60008060008060008060006124738a611f79565b97509550935061248289611f79565b9450925090506124918a61106b565b86141561249d57601e95505b87891480156124ac5750816002145b1580156124c057506124bd8961106b565b83145b156124ca57601e92505b60006124dc848863ffffffff61212a16565b905060006124f0848863ffffffff61212a16565b90506000612504848863ffffffff61212a16565b90506125246101686122868561233b61243d87601e63ffffffff61273016565b9d9c50505050505050505050505050565b60006125446201518083611078565b50909392505050565b60008061255d6201518084611078565b5050905061037e81611f54565b60008183111561257957600080fd5b50620151809190030490565b6000816125a45760405162461bcd60e51b8152600401610375906136e7565b826125b157506000610d9f565b670de0b6b3a7640000838102908482816125c757fe5b05146125e55760405162461bcd60e51b815260040161037590613538565b826000191480156125f95750600160ff1b84145b156126165760405162461bcd60e51b815260040161037590613538565b600083828161262157fe5b059050806103a45760405162461bcd60e51b815260040161037590613459565b60008282018381101561037e5760405162461bcd60e51b815260040161037590613297565b600061037e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061279b565b60008282018183128015906126bd5750838112155b806126d257506000831280156126d257508381125b61037e5760405162461bcd60e51b815260040161037590613320565b600061037e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127c7565b60008261273f57506000610d9f565b826000191480156127535750600160ff1b82145b156127705760405162461bcd60e51b8152600401610375906134f1565b8282028284828161277d57fe5b051461037e5760405162461bcd60e51b8152600401610375906134f1565b600081848411156127bf5760405162461bcd60e51b81526004016103759190613104565b505050900390565b600081836127e85760405162461bcd60e51b81526004016103759190613104565b5060008385816127f457fe5b0495945050505050565b60405180610f0001604052806078906020820280368337509192915050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610d9f57600080fd5b803560098110610d9f57600080fd5b8035610d9f81613848565b8035610d9f81613855565b8035600d8110610d9f57600080fd5b803560138110610d9f57600080fd5b803560048110610d9f57600080fd5b60006107208284031215612932578081fd5b50919050565b600060808284031215612949578081fd5b6129536080613810565b90508135815260208201356020820152604082013561297181613862565b6040820152606082013561298481613862565b606082015292915050565b6000608082840312156129a0578081fd5b6129aa6080613810565b90508135815260208201356129be81613855565b602082015260408201356129d181613848565b6040820152606082013561298481613837565b6000606082840312156129f5578081fd5b6129ff6060613810565b9050813581526020820135612a1381613855565b602082015260408201358015158114612a2b57600080fd5b604082015292915050565b60006102808284031215612932578081fd5b600060208284031215612a59578081fd5b61037e83836128b7565b600060208284031215612a74578081fd5b5035919050565b60008060008060808587031215612a90578283fd5b84359350602085013560098110612aa5578384fd5b92506040850135612ab581613848565b9396929550929360600135925050565b6000806000806000610c608688031215612add578283fd5b85359450612aee8760208801612920565b9350612afe876107408801612a36565b92506109c0860135612b0f81613837565b9150612b1f876109e08801612a36565b90509295509295909350565b600060208284031215612b3c578081fd5b813561037e81613848565b600080600060c08486031215612b5b578081fd5b8335612b6681613848565b925060208401359150612b7c856040860161298f565b90509250925092565b600060208284031215612b96578081fd5b813561037e8161386f565b60008060408385031215612bb3578182fd5b8235612bbe8161386f565b946020939093013593505050565b60006107208284031215612bde578081fd5b61037e8383612920565b6000806000806109e08587031215612bfe578182fd5b612c088686612920565b9350612c18866107208701612a36565b93969395505050506109a0820135916109c0013590565b60008060006107608486031215612c44578081fd5b612c4e8585612920565b92506107208401359150610740840135612c678161386f565b809150509250925092565b60008060006107608486031215612c87578081fd5b612c918585612920565b956107208501359550610740909401359392505050565b6000806000806107808587031215612cbe578182fd5b612cc88686612920565b935061072085013592506107408501359150610760850135612ce98161386f565b939692955090935050565b60006107208284031215612d06578081fd5b612d11610400613810565b612d1b8484612902565b8152612d2a84602085016128dd565b6020820152612d3c84604085016128f3565b6040820152612d4e84606085016128e8565b6060820152612d6084608085016128ce565b6080820152612d728460a085016128dd565b60a0820152612d848460c08501612911565b60c0820152612d968460e085016128b7565b60e0820152610100612daa858286016128b7565b9082015261012083810135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200808401359082015261022080840135908201526102408084013590820152610260808401359082015261028080840135908201526102a080840135908201526102c0612e4c858286016129e4565b90820152610320612e5f858583016129e4565b6102e0830152610380612e74868287016129e4565b6103008401526103e0612e89878288016129e4565b83850152612e9b8761044088016129e4565b610340850152612eaf876104a0880161298f565b610360850152612ec387610520880161298f565b82850152612ed5876105a0880161298f565b6103a0850152612ee9876106208801612938565b6103c0850152612efd876106a08801612938565b908401525090949350505050565b600060808284031215612f1c578081fd5b61037e838361298f565b600060608284031215612f37578081fd5b61037e83836129e4565b6000610280808385031215612f54578182fd5b612f5d81613810565b612f6785856128e8565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60008060008060808587031215613053578182fd5b84359350612aa586602087016128ce565b6006811061306e57fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156130aa5783518352928401929184019160010161308e565b50909695505050505050565b901515815260200190565b90815260200190565b60208101601383106130d857fe5b91905290565b60208101600283106130d857fe5b60408101601d84106130fa57fe5b9281526020015290565b6000602080835283518082850152825b8181101561313057858101830151858201604001528201613114565b818111156131415783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b6020808252602f908201527f4345525446456e67696e652e7061796f666646756e6374696f6e3a204154545260408201526e125095551157d393d517d193d55391608a1b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526038908201527f4345525446456e67696e652e73746174655472616e736974696f6e46756e637460408201527f696f6e3a204154545249425554455f4e4f545f464f554e440000000000000000606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b60006102808201905061373f828451613064565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561382f57600080fd5b604052919050565b801515811461384557600080fd5b50565b6002811061384557600080fd5b6006811061384557600080fd5b6005811061384557600080fd5b601d811061384557600080fdfea2646970667358221220bbd9ba355181c21fb2260a99b3eb64a50ef72b3da1be3cedea89a9981ea9f7a264736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063c40c5a98116100ad578063ebbf552611610071578063ebbf55261461025c578063edc0465f14610206578063f52355861461027c578063f5586e051461028f578063ffcbfc65146102a257610121565b8063c40c5a9814610206578063cb2ef6f71461020e578063d115612f14610223578063e05a66e014610236578063e726d6801461024957610121565b80636f37e55b116100f45780636f37e55b146101a257806372540003146101aa578063811322fb146101cb578063aaf5eb68146101de578063bccf8f31146101e657610121565b8063179331f3146101265780631a2e165d1461014f57806334a64ea21461016f5780636021c23b14610182575b600080fd5b610139610134366004612b47565b6102b5565b60405161014691906130de565b60405180910390f35b61016261015d366004612a7b565b610385565b60405161014691906130c1565b61016261017d366004612c2f565b6103ac565b610195610190366004612c72565b61060b565b6040516101469190613072565b61016261078b565b6101bd6101b8366004612a63565b610797565b6040516101469291906130ec565b6101626101d9366004612b85565b6107c0565b6101626107d6565b6101f96101f4366004612bcc565b6107db565b604051610146919061372b565b610162610839565b61021661083e565b60405161014691906130ca565b610195610231366004612ca8565b610843565b610162610244366004612ba1565b610d85565b61016261025736600461303e565b610da5565b61026f61026a366004612ac5565b610ef8565b60405161014691906130b6565b6101f961028a366004612be8565b610f03565b61016261029d36600461303e565b610f3c565b6101626102b0366004612be8565b610fa7565b600060018460018111156102c557fe5b1415610341576102d48361106b565b6102dd8461108d565b14801561032c57506002826020015160058111156102f757fe5b1480610312575060038260200151600581111561031057fe5b145b8061032c575060048260200151600581111561032a57fe5b145b156103395750600161037e565b50600061037e565b600084600181111561034f57fe5b141561035d5750600061037e565b60405162461bcd60e51b8152600401610375906135db565b60405180910390fd5b9392505050565b60008061039186610797565b9150506103a081868686610da5565b9150505b949350505050565b6000601582601c8111156103bc57fe5b141561042557610200840135156104255760006104016103e53687900387016105a08801612f0b565b6103f560c0880160a08901612b2b565b8761020001358761109c565b90508061041257506000905061037e565b61041d601582610d85565b91505061037e565b601682601c81111561043357fe5b14156104a157610200840135156104a157600061045c6103e53687900387016105a08801612f0b565b90508061046d57506000905061037e565b600061048b6104853688900388016103808901612f26565b836110fc565b9050610498601582610d85565b9250505061037e565b601782601c8111156104af57fe5b1415610510576101c0840135156105105760006104f46104d83687900387016104a08801612f0b565b6104e860c0880160a08901612b2b565b876101c001358761109c565b90508061050557506000905061037e565b61041d601782610d85565b601882601c81111561051e57fe5b141561057d576101c08401351561057d5760006105476104d83687900387016104a08801612f0b565b90508061055857506000905061037e565b60006105706104853688900388016103808901612f26565b9050610498601882610d85565b601a82601c81111561058b57fe5b1415610601576101c0840135156106015760006105b46104d83687900387016104a08801612f0b565b9050806105c557506000905061037e565b8461018001358114156105dc57506000905061037e565b60006105f46104853688900388016104408901612f26565b9050610498601a82610d85565b5060009392505050565b60606106156127fe565b60006101a08601351561066057610632866101a001358686611228565b15610660576106476001876101a00135610d85565b828261ffff166078811061065757fe5b60200201526001015b610160860135156106a95761067b8661016001358686611228565b156106a9576106906002876101600135610d85565b828261ffff16607881106106a057fe5b60200201526001015b610180860135156106f7576106c48661018001358686611228565b1515600114156106f7576106de6014876101800135610d85565b828261ffff16607881106106ee57fe5b60200201526001015b60608161ffff1667ffffffffffffffff8111801561071457600080fd5b5060405190808252806020026020018201604052801561073e578160200160208202803683370190505b50905060005b8261ffff168110156107805783816078811061075c57fe5b602002015182828151811061076d57fe5b6020908102919091010152600101610744565b509695505050505050565b670de0b6b3a764000081565b6000808060f884901c601c8111156107ab57fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156107ce57fe5b90505b919050565b601281565b6107e361281d565b6107eb61281d565b600061020082018190526101e08201819052670de0b6b3a764000061024083018190526102608301526101a084013560c0830152610220820181905281526101409092013560208301525090565b607881565b601290565b606061084d6127fe565b6000601584601c81111561085d57fe5b14156109705761020087013515610970576108766127fe565b6108da88610200013560008a6101800135116108925787610899565b8961018001355b6108ac368c90038c016105a08d01612f0b565b6108bc60c08d0160a08e01612b2b565b60008d6101800135116108d05760006108d3565b60015b8c8c611257565b905060005b60788160ff16101561096d57818160ff16607881106108fa57fe5b60200201516109085761096d565b610926828260ff166078811061091a57fe5b60200201518989611228565b61092f57610965565b61094d6015838360ff166078811061094357fe5b6020020151610d85565b84846078811061095957fe5b60200201526001909201915b6001016108df565b50505b601684601c81111561097e57fe5b1415610a585761020087013515610a58576109976127fe565b6109b388610200013560008a6101800135116108925787610899565b905060005b60788160ff161015610a5557818160ff16607881106109d357fe5b60200201516109e157610a55565b6000610a126109f9368c90038c016103808d01612f26565b848460ff1660788110610a0857fe5b60200201516110fc565b9050610a1f818a8a611228565b610a295750610a4d565b610a34601582610d85565b858560788110610a4057fe5b6020020152506001909201915b6001016109b8565b50505b601784601c811115610a6657fe5b1415610b35576101c087013515610b3557610a7f6127fe565b610ab5886101c0013560008a610180013511610a9b5787610aa2565b8961018001355b6108ac368c90038c016104a08d01612f0b565b905060005b60788160ff161015610b3257818160ff1660788110610ad557fe5b6020020151610ae357610b32565b610af5828260ff166078811061091a57fe5b610afe57610b2a565b610b126017838360ff166078811061094357fe5b848460788110610b1e57fe5b60200201526001909201915b600101610aba565b50505b601884601c811115610b4357fe5b1415610c04576101c087013515610c0457610b5c6127fe565b610b78886101c0013560008a610180013511610a9b5787610aa2565b905060005b60788160ff161015610c0157818160ff1660788110610b9857fe5b6020020151610ba657610c01565b6000610bbe6109f9368c90038c016103808d01612f26565b9050610bcb818a8a611228565b610bd55750610bf9565b610be0601882610d85565b858560788110610bec57fe5b6020020152506001909201915b600101610b7d565b50505b601a84601c811115610c1257fe5b1415610cf8576101c087013515610cf857610c2b6127fe565b610c47886101c0013560008a610180013511610a9b5787610aa2565b905060005b60788160ff161015610cf557818160ff1660788110610c6757fe5b6020020151610c7557610cf5565b886101800135828260ff1660788110610c8a57fe5b60200201511415610c9a57610ced565b6000610cb26109f9368c90038c016104408d01612f26565b9050610cbf818a8a611228565b610cc95750610ced565b610cd4601a82610d85565b858560788110610ce057fe5b6020020152506001909201915b600101610c4c565b50505b60608167ffffffffffffffff81118015610d1157600080fd5b50604051908082528060200260200182016040528015610d3b578160200160208202803683370190505b50905060005b82811015610d7957838160788110610d5557fe5b6020020151828281518110610d6657fe5b6020908102919091010152600101610d41565b50979650505050505050565b60008160f884601c811115610d9657fe5b60ff16901b1790505b92915050565b600081851415610db65750836103a4565b6001846008811115610dc457fe5b1480610ddb57506003846008811115610dd957fe5b145b15610df157610dea858461143c565b90506103a4565b6002846008811115610dff57fe5b1480610e1657506004846008811115610e1457fe5b145b15610e5a576000610e27868561143c565b9050610e3286611498565b610e3b82611498565b1415610e485790506103a4565b610e5286856114af565b9150506103a4565b6005846008811115610e6857fe5b1480610e7f57506007846008811115610e7d57fe5b145b15610e8e57610dea85846114af565b6006846008811115610e9c57fe5b1480610eb357506008846008811115610eb157fe5b145b15610eef576000610ec486856114af565b9050610ecf86611498565b610ed882611498565b1415610ee55790506103a4565b610e52868561143c565b50929392505050565b600195945050505050565b610f0b61281d565b610f33610f1d36879003870187612cf4565b610f2c36879003870187612f41565b85856114fd565b95945050505050565b60006003846008811115610f4c57fe5b1480610f6357506004846008811115610f6157fe5b145b80610f7957506007846008811115610f7757fe5b145b80610f8f57506008846008811115610f8d57fe5b145b15610f9b5750836103a4565b610f3385858585610da5565b600080610fbc61012087016101008801612a48565b6001600160a01b0316141580156110065750610fe061012086016101008701612a48565b6001600160a01b0316610ffa610100870160e08801612a48565b6001600160a01b031614155b1561104357610dea8261103761102136899003890189612cf4565b61103036899003890189612f41565b8787611677565b9063ffffffff6117dc16565b610f3361105536879003870187612cf4565b61106436879003870187612f41565b8585611677565b6000808061107e62015180855b0461187a565b50915091506103a48282611910565b60006103a46201518083611078565b606084015160009015806110ae575081155b156110ba5750816103a4565b60016110c78585886102b5565b60018111156110d257fe5b146110e8576110e385836001611996565b610f33565b610f336110f786846001611996565b611ac7565b600080808460200151600581111561111057fe5b141561113057835161112990849063ffffffff611b0016565b905061037e565b60018460200151600581111561114257fe5b141561115e57835161112990849060070263ffffffff611b0016565b60028460200151600581111561117057fe5b141561118957835161112990849063ffffffff611b1516565b60038460200151600581111561119b57fe5b14156111b757835161112990849060030263ffffffff611b1516565b6004846020015160058111156111c957fe5b14156111e557835161112990849060060263ffffffff611b1516565b6005846020015160058111156111f757fe5b141561121057835161112990849063ffffffff611b8f16565b60405162461bcd60e51b81526004016103759061357e565b60008183111561123a5750600061037e565b83831115801561124a5750818411155b156106015750600161037e565b61125f6127fe565b6112676127fe565b60608701516000906112cf5761127e8a8686611228565b15611299578982826078811061129057fe5b60200201526001015b6112a4898686611228565b156112c757600186151514156112c757888282607881106112c157fe5b60200201525b509050611431565b896000806112de8a848d6102b5565b90505b8b83101561136e576112f4838989611228565b1561133257607684106113195760405162461bcd60e51b815260040161037590613157565b8285856078811061132657fe5b60200201526001909301925b60019182019181600181111561134457fe5b14611359576113548b8e84611996565b611367565b6113676110f78c8f85611996565b92506112e1565b6001891515141561139c576113848c8989611228565b1561139c578b85856078811061139657fe5b60200201525b6000841180156113b957506113b985600186036078811061091a57fe5b156114295760008b6040015160018111156113d057fe5b1480156113dd5750600184115b80156113e95750828c14155b15611429578484607881106113fa57fe5b602002015185600186036078811061140e57fe5b602002015284846078811061141f57fe5b6020020160008152505b509293505050505b979650505050505050565b6000600182600181111561144c57fe5b14156114915761145b83611bb6565b600614156114755761146e836002611b00565b9050610d9f565b61147e83611bb6565b600714156114915761146e836001611b00565b5090919050565b60006114a76201518083611078565b509392505050565b600060018260018111156114bf57fe5b1415611491576114ce83611bb6565b600614156114e15761146e836001611bc9565b6114ea83611bb6565b600714156114915761146e836002611bc9565b61150561281d565b60008061151185610797565b9092509050600182601c81111561152457fe5b141561153f5761153687878387611bde565b925050506103a4565b600282601c81111561154d57fe5b141561155f5761153687878387611c01565b601582601c81111561156d57fe5b141561157f5761153687878387611c15565b601682601c81111561158d57fe5b141561159f5761153687878387611caa565b601782601c8111156115ad57fe5b14156115bf5761153687878387611cc6565b601a82601c8111156115cd57fe5b14156115df5761153687878387611d0d565b601882601c8111156115ed57fe5b14156115ff5761153687878387611d26565b601182601c81111561160d57fe5b141561161f5761153687878387611d95565b601482601c81111561162d57fe5b141561163f5761153687878387611db8565b600b82601c81111561164d57fe5b141561165f5761153687878387611dd3565b60405162461bcd60e51b81526004016103759061368a565b600080600061168585610797565b9092509050600182601c81111561169857fe5b14156116a9576000925050506103a4565b601582601c8111156116b757fe5b14156116c8576000925050506103a4565b601782601c8111156116d657fe5b14156116e7576000925050506103a4565b601a82601c8111156116f557fe5b1415611706576000925050506103a4565b601482601c81111561171457fe5b1415611725576000925050506103a4565b600b82601c81111561173357fe5b1415611744576000925050506103a4565b600282601c81111561175257fe5b14156117645761153687878387611ebe565b601682601c81111561177257fe5b14156117845761153687878387611ef7565b601882601c81111561179257fe5b14156117a45761153687878387611f16565b601182601c8111156117b257fe5b14156117c45761153687878387611f35565b60405162461bcd60e51b8152600401610375906131f3565b60008215806117e9575081155b156117f657506000610d9f565b8260001914801561180a5750600160ff1b82145b156118275760405162461bcd60e51b8152600401610375906133b5565b8282028284828161183457fe5b05146118525760405162461bcd60e51b8152600401610375906133b5565b670de0b6b3a76400008105806103a45760405162461bcd60e51b8152600401610375906132ce565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816118d157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806119215750816003145b8061192c5750816005145b806119375750816007145b806119425750816008145b8061194d575081600a145b80611958575081600c145b156119655750601f610d9f565b816002146119755750601e610d9f565b61197e83611f54565b61198957601c61198c565b601d5b60ff169392505050565b60008080856020015160058111156119aa57fe5b14156119c5578451610dea908590850263ffffffff611b0016565b6001856020015160058111156119d757fe5b14156119f5578451610dea908590850260070263ffffffff611b0016565b600285602001516005811115611a0757fe5b1415611a22578451610dea908590850263ffffffff611b1516565b600385602001516005811115611a3457fe5b1415611a52578451610dea908590850260030263ffffffff611b1516565b600485602001516005811115611a6457fe5b1415611a82578451610dea908590850260060263ffffffff611b1516565b600585602001516005811115611a9457fe5b1415611aaf578451610dea908590850263ffffffff611b8f16565b60405162461bcd60e51b8152600401610375906131a5565b600080600080611ad685611f79565b919450925090506000611ae98484611910565b9050611af6848483611f97565b9695505050505050565b620151808102820182811015610d9f57600080fd5b6000808080611b276201518087611078565b600c918801600019810183810494909401965094509250900660010191506000611b518484611910565b905080821115611b5f578091505b62015180870662015180611b74868686611fb1565b0201945086851015611b8557600080fd5b5050505092915050565b6000808080611ba16201518087611078565b9187019450925090506000611b518484611910565b6007620151809091046003010660010190565b620151808102820382811115610d9f57600080fd5b611be661281d565b50506102609290920151610200820152602081019190915290565b611c0961281d565b50506020820152919050565b611c1d61281d565b60018560c001516003811115611c2f57fe5b1415611c9757611c90856102a00151611037876102200151611037611c678960c001518b608001518c602001518d6101800151610f3c565b611c80898c608001518d602001518e6101800151610f3c565b8b606001518c610180015161202d565b6102208501525b505060c082018190526020820152919050565b611cb261281d565b505060006102208301526020820152919050565b611cce61281d565b611cfb8461026001516110378661024001516110378961022001518760001c6117dc90919063ffffffff16565b6101c085015250506020820152919050565b611d1561281d565b506101e08301526020820152919050565b611d2e61281d565b6101e0840151610200850151611d499163ffffffff61212a16565b61020085015260006101e085018190526101c0850152602084018390526060840151831415611d7b5760048452611d8c565b8360a00151831415611d8c57600584525b50919392505050565b611d9d61281d565b5050600061020083015260a082018190526020820152919050565b611dc061281d565b5050606082018190526020820152919050565b611ddb61281d565b60008460400151600014611df3578460400151611e0c565b611e0c8487608001518860200151896101800151610da5565b6102c087015160400151909150839060009015611e47576000611e34896102c00151856110fc565b9050808311611e4557600180895291505b505b876102e00151604001518015611e5b575080155b15611e8a576000611e71896102e00151856110fc565b9050808311611e835760028852611e88565b600388525b505b6040870151611eb257611eac8689608001518a602001518b6101800151610da5565b60408801525b50949695505050505050565b6000611edd8561024001518561020001516117dc90919063ffffffff16565b611eea8660400151612170565b60000b0295945050505050565b6000611edd8461022001518561020001516117dc90919063ffffffff16565b6000611edd846101c00151856101e001516117dc90919063ffffffff16565b6000611edd846101c001518561020001516117dc90919063ffffffff16565b600060048206158015611f6957506064820615155b806107ce57505061019090061590565b60008080611f8a6201518085611078565b9196909550909350915050565b600062015180611fa8858585611fb1565b02949350505050565b60006107b2841015611fc257600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281611ffe57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b60008484101561204f5760405162461bcd60e51b8152600401610375906134aa565b600083600581111561205d57fe5b141561206d57610dea8585612234565b600183600581111561207b57fe5b141561208b57610dea8585612354565b600283600581111561209957fe5b14156120a957610dea858561237f565b60048360058111156120b757fe5b14156120c757610dea858561239e565b60038360058111156120d557fe5b14156120e657610dea85858461245f565b60058360058111156120f457fe5b14156121125760405162461bcd60e51b8152600401610375906133fc565b60405162461bcd60e51b815260040161037590613242565b600081830381831280159061213f5750838113155b80612154575060008312801561215457508381135b61037e5760405162461bcd60e51b815260040161037590613646565b60008082600c81111561217f57fe5b141561218d575060016107d1565b600182600c81111561219b57fe5b14156121aa57506000196107d1565b600682600c8111156121b857fe5b14156121c6575060016107d1565b600782600c8111156121d457fe5b14156121e357506000196107d1565b600282600c8111156121f157fe5b14156121ff575060016107d1565b600382600c81111561220d57fe5b141561221c57506000196107d1565b60405162461bcd60e51b815260040161037590613361565b60008061224084612535565b9050600061224d84612535565b9050600061225a8661254d565b6122665761016d61226a565b61016e5b61ffff1690508183141561229c5761229281612286888861256a565b9063ffffffff61258516565b9350505050610d9f565b60006122a78661254d565b6122b35761016d6122b7565b61016e5b61ffff16905060006122e8836122868a6122e36122db8a600163ffffffff61264116565b600180611f97565b61256a565b90506000612305836122866122ff88600180611f97565b8b61256a565b905061234761232b600161231f888a63ffffffff61266616565b9063ffffffff61266616565b61233b848463ffffffff6126a816565b9063ffffffff6126a816565b9998505050505050505050565b600061037e61016861228662015180612373868863ffffffff61266616565b9063ffffffff6126ee16565b600061037e61016d61228662015180612373868863ffffffff61266616565b60008060008060008060006123b289611f79565b9750955093506123c188611f79565b945092509050601f8614156123d557601e95505b82601f14156123e357601e92505b60006123f5848863ffffffff61212a16565b90506000612409848863ffffffff61212a16565b9050600061241d848863ffffffff61212a16565b905061244f6101686122868561233b61243d87601e63ffffffff61273016565b61233b8761016863ffffffff61273016565b9c9b505050505050505050505050565b60008060008060008060006124738a611f79565b97509550935061248289611f79565b9450925090506124918a61106b565b86141561249d57601e95505b87891480156124ac5750816002145b1580156124c057506124bd8961106b565b83145b156124ca57601e92505b60006124dc848863ffffffff61212a16565b905060006124f0848863ffffffff61212a16565b90506000612504848863ffffffff61212a16565b90506125246101686122868561233b61243d87601e63ffffffff61273016565b9d9c50505050505050505050505050565b60006125446201518083611078565b50909392505050565b60008061255d6201518084611078565b5050905061037e81611f54565b60008183111561257957600080fd5b50620151809190030490565b6000816125a45760405162461bcd60e51b8152600401610375906136e7565b826125b157506000610d9f565b670de0b6b3a7640000838102908482816125c757fe5b05146125e55760405162461bcd60e51b815260040161037590613538565b826000191480156125f95750600160ff1b84145b156126165760405162461bcd60e51b815260040161037590613538565b600083828161262157fe5b059050806103a45760405162461bcd60e51b815260040161037590613459565b60008282018381101561037e5760405162461bcd60e51b815260040161037590613297565b600061037e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061279b565b60008282018183128015906126bd5750838112155b806126d257506000831280156126d257508381125b61037e5760405162461bcd60e51b815260040161037590613320565b600061037e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127c7565b60008261273f57506000610d9f565b826000191480156127535750600160ff1b82145b156127705760405162461bcd60e51b8152600401610375906134f1565b8282028284828161277d57fe5b051461037e5760405162461bcd60e51b8152600401610375906134f1565b600081848411156127bf5760405162461bcd60e51b81526004016103759190613104565b505050900390565b600081836127e85760405162461bcd60e51b81526004016103759190613104565b5060008385816127f457fe5b0495945050505050565b60405180610f0001604052806078906020820280368337509192915050565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610d9f57600080fd5b803560098110610d9f57600080fd5b8035610d9f81613848565b8035610d9f81613855565b8035600d8110610d9f57600080fd5b803560138110610d9f57600080fd5b803560048110610d9f57600080fd5b60006107208284031215612932578081fd5b50919050565b600060808284031215612949578081fd5b6129536080613810565b90508135815260208201356020820152604082013561297181613862565b6040820152606082013561298481613862565b606082015292915050565b6000608082840312156129a0578081fd5b6129aa6080613810565b90508135815260208201356129be81613855565b602082015260408201356129d181613848565b6040820152606082013561298481613837565b6000606082840312156129f5578081fd5b6129ff6060613810565b9050813581526020820135612a1381613855565b602082015260408201358015158114612a2b57600080fd5b604082015292915050565b60006102808284031215612932578081fd5b600060208284031215612a59578081fd5b61037e83836128b7565b600060208284031215612a74578081fd5b5035919050565b60008060008060808587031215612a90578283fd5b84359350602085013560098110612aa5578384fd5b92506040850135612ab581613848565b9396929550929360600135925050565b6000806000806000610c608688031215612add578283fd5b85359450612aee8760208801612920565b9350612afe876107408801612a36565b92506109c0860135612b0f81613837565b9150612b1f876109e08801612a36565b90509295509295909350565b600060208284031215612b3c578081fd5b813561037e81613848565b600080600060c08486031215612b5b578081fd5b8335612b6681613848565b925060208401359150612b7c856040860161298f565b90509250925092565b600060208284031215612b96578081fd5b813561037e8161386f565b60008060408385031215612bb3578182fd5b8235612bbe8161386f565b946020939093013593505050565b60006107208284031215612bde578081fd5b61037e8383612920565b6000806000806109e08587031215612bfe578182fd5b612c088686612920565b9350612c18866107208701612a36565b93969395505050506109a0820135916109c0013590565b60008060006107608486031215612c44578081fd5b612c4e8585612920565b92506107208401359150610740840135612c678161386f565b809150509250925092565b60008060006107608486031215612c87578081fd5b612c918585612920565b956107208501359550610740909401359392505050565b6000806000806107808587031215612cbe578182fd5b612cc88686612920565b935061072085013592506107408501359150610760850135612ce98161386f565b939692955090935050565b60006107208284031215612d06578081fd5b612d11610400613810565b612d1b8484612902565b8152612d2a84602085016128dd565b6020820152612d3c84604085016128f3565b6040820152612d4e84606085016128e8565b6060820152612d6084608085016128ce565b6080820152612d728460a085016128dd565b60a0820152612d848460c08501612911565b60c0820152612d968460e085016128b7565b60e0820152610100612daa858286016128b7565b9082015261012083810135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200808401359082015261022080840135908201526102408084013590820152610260808401359082015261028080840135908201526102a080840135908201526102c0612e4c858286016129e4565b90820152610320612e5f858583016129e4565b6102e0830152610380612e74868287016129e4565b6103008401526103e0612e89878288016129e4565b83850152612e9b8761044088016129e4565b610340850152612eaf876104a0880161298f565b610360850152612ec387610520880161298f565b82850152612ed5876105a0880161298f565b6103a0850152612ee9876106208801612938565b6103c0850152612efd876106a08801612938565b908401525090949350505050565b600060808284031215612f1c578081fd5b61037e838361298f565b600060608284031215612f37578081fd5b61037e83836129e4565b6000610280808385031215612f54578182fd5b612f5d81613810565b612f6785856128e8565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60008060008060808587031215613053578182fd5b84359350612aa586602087016128ce565b6006811061306e57fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156130aa5783518352928401929184019160010161308e565b50909695505050505050565b901515815260200190565b90815260200190565b60208101601383106130d857fe5b91905290565b60208101600283106130d857fe5b60408101601d84106130fa57fe5b9281526020015290565b6000602080835283518082850152825b8181101561313057858101830151858201604001528201613114565b818111156131415783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b6020808252602f908201527f4345525446456e67696e652e7061796f666646756e6374696f6e3a204154545260408201526e125095551157d393d517d193d55391608a1b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526038908201527f4345525446456e67696e652e73746174655472616e736974696f6e46756e637460408201527f696f6e3a204154545249425554455f4e4f545f464f554e440000000000000000606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b60006102808201905061373f828451613064565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561382f57600080fd5b604052919050565b801515811461384557600080fd5b50565b6002811061384557600080fd5b6006811061384557600080fd5b6005811061384557600080fd5b601d811061384557600080fdfea2646970667358221220bbd9ba355181c21fb2260a99b3eb64a50ef72b3da1be3cedea89a9981ea9f7a264736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "440:19173:97:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "440:19173:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1010:924:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;631:346:84;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11567:3461:97:-;;;;;;:::i;:::-;;:::i;3633:1372::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;298:52:73:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;956:145::-;;;;;;:::i;:::-;;:::i;254:38:73:-;;;:::i;2723:545:97:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;356:44:73:-;;;:::i;510:112:97:-;;;:::i;:::-;;;;;;;:::i;5411:5800::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;15625:321:97:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1036:378::-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::i;:::-;;:::i;1798:736:97:-;;;;;;:::i;:::-;;:::i;1010:924:78:-;1185:20;1233:24;1225:4;:32;;;;;;;;;1221:618;;;1483:53;1526:9;1483:42;:53::i;:::-;1434:45;1469:9;1434:34;:45::i;:::-;:102;:174;;;;-1:-1:-1;1568:3:78;1557:5;:7;;;:14;;;;;;;;;:32;;;-1:-1:-1;1586:3:78;1575:5;:7;;;:14;;;;;;;;;1557:32;:50;;;-1:-1:-1;1604:3:78;1593:5;:7;;;:14;;;;;;;;;1557:50;1413:274;;;-1:-1:-1;1648:24:78;1641:31;;1413:274;-1:-1:-1;1707:23:78;1700:30;;1221:618;1759:23;1751:4;:31;;;;;;;;;1747:92;;;-1:-1:-1;1805:23:78;1798:30;;1747:92;1848:79;;-1:-1:-1;;;1848:79:78;;;;;;;:::i;:::-;;;;;;;;1010:924;;;;;;:::o;631:346:84:-;794:7;820:20;844:19;856:6;844:11;:19::i;:::-;817:46;;;913:57;928:12;942:3;947:8;957:12;913:14;:57::i;:::-;906:64;;;631:346;;;;;;;:::o;11567:3461:97:-;11766:7;11806:13;11793:9;:26;;;;;;;;;11789:523;;;11839:29;;;;:34;11835:467;;11893:22;11918:233;;;;;;;;11977:19;;;11918:233;:::i;:::-;12018:26;;;;;;;;:::i;:::-;12066:5;:29;;;12117:16;11918:37;:233::i;:::-;11893:258;-1:-1:-1;12173:28:97;12169:51;;-1:-1:-1;12218:1:97;;-1:-1:-1;12203:17:97;;12169:51;12245:42;12257:13;12272:14;12245:11;:42::i;:::-;12238:49;;;;;11835:467;12340:13;12327:9;:26;;;;;;;;;12323:656;;;12373:29;;;;:34;12369:600;;12427:22;12452:233;;;;;;;;12511:19;;;12452:233;:::i;:::-;12427:258;-1:-1:-1;12707:28:97;12703:51;;-1:-1:-1;12752:1:97;;-1:-1:-1;12737:17:97;;12703:51;12772:36;12811:62;;;;;;;;12834:22;;;12811:62;:::i;:::-;12858:14;12811:22;:62::i;:::-;12772:101;;12898:56;12910:13;12925:28;12898:11;:56::i;:::-;12891:63;;;;;;12369:600;13006:13;12993:9;:26;;;;;;;;;12989:547;;;13039:33;;;;:38;13035:491;;13097:26;13126:241;;;;;;;;13185:23;;;13126:241;:::i;:::-;13230:26;;;;;;;;:::i;:::-;13278:5;:33;;;13333:16;13126:37;:241::i;:::-;13097:270;-1:-1:-1;13389:32:97;13385:55;;-1:-1:-1;13438:1:97;;-1:-1:-1;13423:17:97;;13385:55;13465:46;13477:13;13492:18;13465:11;:46::i;13035:491::-;13563:13;13550:9;:26;;;;;;;;;13546:688;;;13596:33;;;;:38;13592:632;;13654:26;13683:241;;;;;;;;13742:23;;;13683:241;:::i;:::-;13654:270;-1:-1:-1;13946:32:97;13942:55;;-1:-1:-1;13995:1:97;;-1:-1:-1;13980:17:97;;13942:55;14015:40;14058:66;;;;;;;;14081:22;;;14058:66;:::i;:::-;14015:109;;14149:60;14161:13;14176:32;14149:11;:60::i;13592:632::-;14261:12;14248:9;:25;;;;;;;;;14244:751;;;14293:33;;;;:38;14289:696;;14351:26;14380:241;;;;;;;;14439:23;;;14380:241;:::i;:::-;14351:270;-1:-1:-1;14643:32:97;14639:55;;-1:-1:-1;14692:1:97;;-1:-1:-1;14677:17:97;;14639:55;14738:5;:18;;;14716;:40;14712:63;;;-1:-1:-1;14773:1:97;;-1:-1:-1;14758:17:97;;14712:63;14793:33;14829:64;;;;;;;;14852:20;;;14829:64;:::i;:::-;14793:100;;14918:52;14930:12;14944:25;14918:11;:52::i;14289:696::-;-1:-1:-1;15019:1:97;11567:3461;;;;;:::o;3633:1372::-;3837:16;3869:46;;:::i;:::-;3925:12;3974:15;;;;:20;3970:226;;4014:54;4026:5;:15;;;4043:12;4057:10;4014:11;:54::i;:::-;4010:176;;;4104:42;4116:12;4130:5;:15;;;4104:11;:42::i;:::-;4088:6;4095:5;4088:13;;;;;;;;;;;;:58;4164:7;;4010:176;4238:25;;;;:30;4234:257;;4288:64;4300:5;:25;;;4327:12;4341:10;4288:11;:64::i;:::-;4284:197;;;4388:53;4400:13;4415:5;:25;;;4388:11;:53::i;:::-;4372:6;4379:5;4372:13;;;;;;;;;;;;:69;4459:7;;4284:197;4531:18;;;;:23;4527:243;;4574:57;4586:5;:18;;;4606:12;4620:10;4574:11;:57::i;:::-;:65;;4635:4;4574:65;4570:190;;;4675:45;4687:12;4701:5;:18;;;4675:11;:45::i;:::-;4659:6;4666:5;4659:13;;;;;;;;;;;;:61;4738:7;;4570:190;4831:25;4873:5;4859:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4859:20:97;-1:-1:-1;4831:48:97;-1:-1:-1;4894:9:97;4889:84;4913:5;4909:9;;:1;:9;4889:84;;;4953:6;4960:1;4953:9;;;;;;;;;;;4939:8;4948:1;4939:11;;;;;;;;;;;;;;;;;:23;4920:3;;4889:84;;;-1:-1:-1;4990:8:97;3633:1372;-1:-1:-1;;;;;;3633:1372:97:o;298:52:73:-;338:12;298:52;:::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;956:145::-;1046:7;1084:9;1076:18;;;;;;;;1069:25;;956:145;;;;:::o;254:38:73:-;290:2;254:38;:::o;2723:545:97:-;2843:12;;:::i;:::-;2871:18;;:::i;:::-;2917:1;2900:14;;;:18;;;2928:22;;;:26;;;338:12:73;2964:18:97;;;:35;;;3009:22;;;:39;3080:15;;;;3058:19;;;:37;3105:23;;;:27;;;3143:50;;-1:-1:-1;3222:16:97;;;;-1:-1:-1;3203:16:97;;:35;-1:-1:-1;2900:14:97;2723:545::o;356:44:73:-;397:3;356:44;:::o;510:112:97:-;597:18;510:112;:::o;5411:5800::-;5640:16;5672:46;;:::i;:::-;5728:13;5769;5756:9;:26;;;;;;;;;5752:917;;;5802:29;;;;:34;5798:861;;5856:45;;:::i;:::-;5904:393;5954:5;:29;;;6027:1;6006:5;:18;;;:22;6005:58;;6053:10;6005:58;;;6032:5;:18;;;6005:58;5904:393;;;;;;;6085:19;;;5904:393;:::i;:::-;6126:26;;;;;;;;:::i;:::-;6196:1;6175:5;:18;;;:22;6174:39;;6208:5;6174:39;;;6201:4;6174:39;6235:12;6269:10;5904:28;:393::i;:::-;5856:441;-1:-1:-1;6320:7:97;6315:330;397:3:73;6333:1:97;:18;;;6315:330;;;6384:14;6399:1;6384:17;;;;;;;;;;;;;6380:33;;6408:5;;6380:33;6439:56;6451:14;6466:1;6451:17;;;;;;;;;;;;;6470:12;6484:10;6439:11;:56::i;:::-;6435:79;;6506:8;;6435:79;6552:45;6564:13;6579:14;6594:1;6579:17;;;;;;;;;;;;;6552:11;:45::i;:::-;6536:6;6543:5;6536:13;;;;;;;;;;:61;6619:7;;;;;6315:330;6353:3;;6315:330;;;;5798:861;;6697:13;6684:9;:26;;;;;;;;;6680:1065;;;6730:29;;;;:34;6726:1009;;6784:45;;:::i;:::-;6832:393;6882:5;:29;;;6955:1;6934:5;:18;;;:22;6933:58;;6981:10;6933:58;;6832:393;6784:441;-1:-1:-1;7248:7:97;7243:478;397:3:73;7261:1:97;:18;;;7243:478;;;7312:14;7327:1;7312:17;;;;;;;;;;;;;7308:33;;7336:5;;7308:33;7363:36;7402:65;;;;;;;;7425:22;;;7402:65;:::i;:::-;7449:14;7464:1;7449:17;;;;;;;;;;;;;7402:22;:65::i;:::-;7363:104;;7493:67;7505:28;7535:12;7549:10;7493:11;:67::i;:::-;7489:90;;7571:8;;;7489:90;7617:56;7629:13;7644:28;7617:11;:56::i;:::-;7601:6;7608:5;7601:13;;;;;;;;;;:72;-1:-1:-1;7695:7:97;;;;;7243:478;7281:3;;7243:478;;;;6726:1009;;7772:13;7759:9;:26;;;;;;;;;7755:945;;;7805:33;;;;:38;7801:889;;7863:49;;:::i;:::-;7915:401;7965:5;:33;;;8042:1;8021:5;:18;;;:22;8020:58;;8068:10;8020:58;;;8047:5;:18;;;8020:58;7915:401;;;;;;;8100:23;;;7915:401;:::i;:::-;7863:453;-1:-1:-1;8339:7:97;8334:342;397:3:73;8352:1:97;:18;;;8334:342;;;8403:18;8422:1;8403:21;;;;;;;;;;;;;8399:37;;8431:5;;8399:37;8462:60;8474:18;8493:1;8474:21;;;;;;;;8462:60;8458:83;;8533:8;;8458:83;8579:49;8591:13;8606:18;8625:1;8606:21;;;;;;;;8579:49;8563:6;8570:5;8563:13;;;;;;;;;;:65;8650:7;;;;;8334:342;8372:3;;8334:342;;;;7801:889;;8727:13;8714:9;:26;;;;;;;;;8710:1101;;;8760:33;;;;:38;8756:1045;;8818:49;;:::i;:::-;8870:401;8920:5;:33;;;8997:1;8976:5;:18;;;:22;8975:58;;9023:10;8975:58;;8870:401;8818:453;-1:-1:-1;9294:7:97;9289:498;397:3:73;9307:1:97;:18;;;9289:498;;;9358:18;9377:1;9358:21;;;;;;;;;;;;;9354:37;;9386:5;;9354:37;9413:40;9456:69;;;;;;;;9479:22;;;9456:69;:::i;:::-;9413:112;;9551:71;9563:32;9597:12;9611:10;9551:11;:71::i;:::-;9547:94;;9633:8;;;9547:94;9679:60;9691:13;9706:32;9679:11;:60::i;:::-;9663:6;9670:5;9663:13;;;;;;;;;;:76;-1:-1:-1;9761:7:97;;;;;9289:498;9327:3;;9289:498;;;;8756:1045;;9838:12;9825:9;:25;;;;;;;;;9821:1155;;;9870:33;;;;:38;9866:1100;;9928:49;;:::i;:::-;9980:401;10030:5;:33;;;10107:1;10086:5;:18;;;:22;10085:58;;10133:10;10085:58;;9980:401;9928:453;-1:-1:-1;10404:7:97;10399:553;397:3:73;10417:1:97;:18;;;10399:553;;;10468:18;10487:1;10468:21;;;;;;;;;;;;;10464:37;;10496:5;;10464:37;10552:5;:18;;;10527;10546:1;10527:21;;;;;;;;;;;;;:43;10523:57;;;10572:8;;10523:57;10602:33;10638:67;;;;;;;;10661:20;;;10638:67;:::i;:::-;10602:103;;10731:64;10743:25;10770:12;10784:10;10731:11;:64::i;:::-;10727:87;;10806:8;;;10727:87;10852:52;10864:12;10878:25;10852:11;:52::i;:::-;10836:6;10843:5;10836:13;;;;;;;;;;:68;-1:-1:-1;10926:7:97;;;;;10399:553;10437:3;;10399:553;;;;9866:1100;;11037:25;11079:5;11065:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11065:20:97;-1:-1:-1;11037:48:97;-1:-1:-1;11100:9:97;11095:84;11119:5;11115:1;:9;11095:84;;;11159:6;11166:1;11159:9;;;;;;;;;;;11145:8;11154:1;11145:11;;;;;;;;;;;;;;;;;:23;11126:3;;11095:84;;;-1:-1:-1;11196:8:97;5411:5800;-1:-1:-1;;;;;;;5411:5800:97:o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;-1:-1:-1;234:247:82;;;;;:::o;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;;1599:2214;-1:-1:-1;;;1599:2214:75:o;15625:321:97:-;15935:4;15625:321;;;;;;;:::o;1036:378::-;1255:12;;:::i;:::-;1290:117;;;;;;;;1327:5;1290:117;:::i;:::-;;;;;;;;1346:5;1290:117;:::i;:::-;1365:6;1385:12;1290:23;:117::i;:::-;1283:124;1036:378;-1:-1:-1;;;;;1036:378:97:o;648:583:75:-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;1798:736:97:-;2018:6;;2124:24;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2124:38:97;;;:84;;;;-1:-1:-1;2184:24:97;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2166:42:97;:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2166:42:97;;;2124:84;2120:282;;;2231:160;2377:12;2231:128;;;;;;;;2263:5;2231:128;:::i;:::-;;;;;;;;2286:5;2231:128;:::i;:::-;2309:6;2333:12;2231:14;:128::i;:::-;:138;:160;:138;:160;:::i;2120:282::-;2419:108;;;;;;;;2447:5;2419:108;:::i;:::-;;;;;;;;2466:5;2419:108;:::i;:::-;2485:6;2505:12;2419:14;:108::i;6258:217:106:-;6321:16;;;6376:40;1020:12;6388:9;:27;;6376:11;:40::i;:::-;6349:67;;;;;6440:28;6456:4;6462:5;6440:15;:28::i;7362:132::-;7417:8;7447:40;1020:12;7459:9;:27;;5092:543:81;5339:11;;;;5312:7;;5339:20;;:42;;-1:-1:-1;5363:18:81;;5339:42;5335:65;;;-1:-1:-1;5390:10:81;5383:17;;5335:65;5474:24;5419:51;5446:4;5452:10;5464:5;5419:26;:51::i;:::-;:79;;;;;;;;;5418:210;;5587:41;5604:5;5611:13;5626:1;5587:16;:41::i;:::-;5418:210;;;5514:58;5530:41;5547:5;5554:13;5569:1;5530:16;:41::i;:::-;5514:15;:58::i;443:879:83:-;559:7;;;617:6;:8;;;:15;;;;;;;;;613:673;;;681:8;;663:27;;:9;;:27;:17;:27;:::i;:::-;648:42;;613:673;;;723:3;711:6;:8;;;:15;;;;;;;;;707:579;;;775:8;;757:31;;:9;;786:1;775:12;757:31;:17;:31;:::i;707:579::-;821:3;809:6;:8;;;:15;;;;;;;;;805:481;;;875:8;;855:29;;:9;;:29;:19;:29;:::i;805:481::-;917:3;905:6;:8;;;:15;;;;;;;;;901:385;;;971:8;;951:33;;:9;;982:1;971:12;951:33;:19;:33;:::i;901:385::-;1017:3;1005:6;:8;;;:15;;;;;;;;;1001:285;;;1071:8;;1051:33;;:9;;1082:1;1071:12;1051:33;:19;:33;:::i;1001:285::-;1117:3;1105:6;:8;;;:15;;;;;;;;;1101:185;;;1170:8;;1151:28;;:9;;:28;:18;:28;:::i;1101:185::-;1210:65;;-1:-1:-1;;;1210:65:83;;;;;;;:::i;5714:342:81:-;5877:4;5918:12;5901:14;:29;5897:47;;;-1:-1:-1;5939:5:81;5932:12;;5897:47;5976:9;5958:14;:27;;:56;;;;;6002:12;5989:9;:25;;5958:56;5954:73;;;-1:-1:-1;6023:4:81;6016:11;;2384:2503;2673:30;;:::i;:::-;2719:36;;:::i;:::-;3048:11;;;;2765:13;;3044:360;;3088:49;3100:10;3112:12;3126:10;3088:11;:49::i;:::-;3084:138;;;3172:10;3157:5;3163;3157:12;;;;;;;;;;:25;3200:7;;3084:138;3239:47;3251:8;3261:12;3275:10;3239:11;:47::i;:::-;3235:133;;;3324:4;3310:18;;;;3306:47;;;3345:8;3330:5;3336;3330:12;;;;;;;;;;:23;3306:47;-1:-1:-1;3388:5:81;-1:-1:-1;3381:12:81;;3044:360;3429:10;3414:12;;3512:51;3539:4;3429:10;3557:5;3512:26;:51::i;:::-;3478:85;;3650:615;3664:8;3657:4;:15;3650:615;;;3790:43;3802:4;3808:12;3822:10;3790:11;:43::i;:::-;3786:231;;;3870:18;3861:28;;3853:87;;;;-1:-1:-1;;;3853:87:81;;;;;;;:::i;:::-;3973:4;3958:5;3964;3958:12;;;;;;;;;;:19;3995:7;;;;;3786:231;4031:12;;;;;4066:10;:38;;;;;;;;;4065:189;;4207:47;4224:5;4231:10;4243;4207:16;:47::i;:::-;4065:189;;;4124:64;4140:47;4157:5;4164:10;4176;4140:16;:47::i;4124:64::-;4058:196;;3650:615;;;4349:4;4335:18;;;;4331:157;;;4373:47;4385:8;4395:12;4409:10;4373:11;:47::i;:::-;4369:109;;;4455:8;4440:5;4446;4440:12;;;;;;;;;;:23;4369:109;4615:1;4607:5;:9;:68;;;;;4620:55;4632:5;4646:1;4638:5;:9;4632:16;;;;;;4620:55;4603:255;;;4706:6;4695:5;:7;;;:17;;;;;;;;;:30;;;;;4724:1;4716:5;:9;4695:30;:50;;;;;4741:4;4729:8;:16;;4695:50;4691:157;;;4784:5;4790;4784:12;;;;;;;;;;;4765:5;4779:1;4771:5;:9;4765:16;;;;;;;;;;:31;4821:5;4827;4821:12;;;;;;;;;;4814:19;;;;4691:157;-1:-1:-1;4875:5:81;;-1:-1:-1;;;;2384:2503:81;;;;;;;;;;:::o;3980:550:75:-;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;;7310:40;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;16606:1409:97:-;16807:12;;:::i;:::-;16836:19;16857:20;16881:19;16893:6;16881:11;:19::i;:::-;16835:65;;-1:-1:-1;16835:65:97;-1:-1:-1;16928:12:97;16915:9;:25;;;;;;;;;16911:92;;;16949:54;16962:5;16969;16976:12;16990;16949;:54::i;:::-;16942:61;;;;;;16911:92;17030:13;17017:9;:26;;;;;;;;;17013:94;;;17052:55;17066:5;17073;17080:12;17094;17052:13;:55::i;17013:94::-;17134:13;17121:9;:26;;;;;;;;;17117:94;;;17156:55;17170:5;17177;17184:12;17198;17156:13;:55::i;17117:94::-;17238:13;17225:9;:26;;;;;;;;;17221:94;;;17260:55;17274:5;17281;17288:12;17302;17260:13;:55::i;17221:94::-;17342:13;17329:9;:26;;;;;;;;;17325:94;;;17364:55;17378:5;17385;17392:12;17406;17364:13;:55::i;17325:94::-;17446:12;17433:9;:25;;;;;;;;;17429:92;;;17467:54;17480:5;17487;17494:12;17508;17467;:54::i;17429:92::-;17548:13;17535:9;:26;;;;;;;;;17531:94;;;17570:55;17584:5;17591;17598:12;17612;17570:13;:55::i;17531:94::-;17652:12;17639:9;:25;;;;;;;;;17635:92;;;17673:54;17686:5;17693;17700:12;17714;17673;:54::i;17635:92::-;17754:12;17741:9;:25;;;;;;;;;17737:92;;;17775:54;17788:5;17795;17802:12;17816;17775;:54::i;17737:92::-;17856:12;17843:9;:25;;;;;;;;;17839:92;;;17877:54;17890:5;17897;17904:12;17918;17877;:54::i;17839:92::-;17942:66;;-1:-1:-1;;;17942:66:97;;;;;;;:::i;18546:1065::-;18738:6;18761:19;18782:20;18806:19;18818:6;18806:11;:19::i;:::-;18760:65;;-1:-1:-1;18760:65:97;-1:-1:-1;18853:12:97;18840:9;:25;;;;;;;;;18836:39;;;18874:1;18867:8;;;;;;18836:39;18902:13;18889:9;:26;;;;;;;;;18885:40;;;18924:1;18917:8;;;;;;18885:40;18952:13;18939:9;:26;;;;;;;;;18935:40;;;18974:1;18967:8;;;;;;18935:40;19002:12;18989:9;:25;;;;;;;;;18985:39;;;19023:1;19016:8;;;;;;18985:39;19051:12;19038:9;:25;;;;;;;;;19034:39;;;19072:1;19065:8;;;;;;19034:39;19100:12;19087:9;:25;;;;;;;;;19083:39;;;19121:1;19114:8;;;;;;19083:39;19149:13;19136:9;:26;;;;;;;;;19132:94;;;19171:55;19185:5;19192;19199:12;19213;19171:13;:55::i;19132:94::-;19253:13;19240:9;:26;;;;;;;;;19236:94;;;19275:55;19289:5;19296;19303:12;19317;19275:13;:55::i;19236:94::-;19357:13;19344:9;:26;;;;;;;;;19340:94;;;19379:55;19393:5;19400;19407:12;19421;19379:13;:55::i;19340:94::-;19461:12;19448:9;:25;;;;;;;;;19444:92;;;19482:54;19495:5;19502;19509:12;19523;19482;:54::i;19444:92::-;19547:57;;-1:-1:-1;;;19547:57:97;;;;;;;:::i;613:527:80:-;699:6;725;;;:16;;-1:-1:-1;735:6:80;;725:16;721:30;;;-1:-1:-1;750:1:80;743:8;;721:30;772:1;-1:-1:-1;;772:7:80;:26;;;;;-1:-1:-1;;;783:1:80;:15;772:26;770:29;762:81;;;;-1:-1:-1;;;762:81:80;;;;;;;:::i;:::-;864:5;;;868:1;864;:5;:1;887:5;;;;;:10;879:62;;;;-1:-1:-1;;;879:62:80;;;;;;;:::i;:::-;353:15;1010:25;;;1045:69;;;;-1:-1:-1;;;1045:69:80;;;;;;;:::i;3309:605:106:-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;6480:383::-;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;620:957:81:-;751:7;;;809:5;:7;;;:14;;;;;;;;;805:736;;;873:7;;854:40;;:10;;873:20;;854:40;:18;:40;:::i;805:736::-;926:3;915:5;:7;;;:14;;;;;;;;;911:630;;;979:7;;960:44;;:10;;979:24;;989:1;979:24;960:44;:18;:44;:::i;911:630::-;1036:3;1025:5;:7;;;:14;;;;;;;;;1021:520;;;1091:7;;1070:42;;:10;;1091:20;;1070:42;:20;:42;:::i;1021:520::-;1144:3;1133:5;:7;;;:14;;;;;;;;;1129:412;;;1199:7;;1178:46;;:10;;1199:24;;1209:1;1199:24;1178:46;:20;:46;:::i;1129:412::-;1256:3;1245:5;:7;;;:14;;;;;;;;;1241:300;;;1311:7;;1290:46;;:10;;1311:24;;1321:1;1311:24;1290:46;:20;:46;:::i;1241:300::-;1368:3;1357:5;:7;;;:14;;;;;;;;;1353:188;;;1422:7;;1402:41;;:10;;1422:20;;1402:41;:19;:41;:::i;1353:188::-;1474:56;;-1:-1:-1;;;1474:56:81;;;;;;;:::i;2150:865:78:-;2226:7;2717:12;2733:13;2750:11;2786:54;2830:9;2786:43;:54::i;:::-;2765:75;;-1:-1:-1;2765:75:78;-1:-1:-1;2765:75:78;-1:-1:-1;2844:22:78;2869:56;2765:75;;2869:43;:56::i;:::-;2844:81;;2937:74;2983:4;2989:5;2996:14;2937:45;:74::i;:::-;2930:81;2150:865;-1:-1:-1;;;;;;2150:865:78:o;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:40;8702:2;8654:16;;;-1:-1:-1;;8689:9:106;;8688:16;;;8680:24;;;;;-1:-1:-1;8654:16:106;-1:-1:-1;8568:76:106;-1:-1:-1;8702:2:106;8722:16;8741:1;8722:20;8714:28;;8752:16;8771:28;8787:4;8793:5;8771:15;:28::i;:::-;8752:47;;8819:11;8813:3;:17;8809:65;;;8852:11;8846:17;;8809:65;1020:12;8950:9;:27;1020:12;8898:31;8912:4;8918:5;8925:3;8898:13;:31::i;:::-;:49;:79;8883:94;;9011:9;8995:12;:25;;8987:34;;;;;;8467:561;;;;;;;;:::o;7977:485::-;8047:17;;;;8112:40;1020:12;8124:9;:27;;8112:40;8162:14;;;;-1:-1:-1;8076:76:106;-1:-1:-1;8076:76:106;-1:-1:-1;8186:16:106;8205:28;8162:14;8076:76;8205:15;:28::i;6898:175::-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;396:333:99;599:12;;:::i;:::-;-1:-1:-1;;644:14:99;;;;;;627;;;:31;668:16;;;:31;;;;627:14;396:333::o;865:298::-;1075:12;;:::i;:::-;-1:-1:-1;;1103:16:99;;;:31;:16;865:298;-1:-1:-1;865:298:99:o;1300:835::-;1504:12;;:::i;:::-;1556:14;1536:5;:16;;;:34;;;;;;;;;1532:480;;;1612:389;1984:5;:16;;;1612:361;1954:5;:18;;;1612:331;1642:99;1656:5;:19;;;1677:5;:27;;;1706:5;:14;;;1722:5;:18;;;1642:13;:99::i;:::-;1759:92;1773:12;1787:5;:27;;;1816:5;:14;;;1832:5;:18;;;1759:13;:92::i;:::-;1869:5;:24;;;1911:5;:18;;;1612:12;:331::i;:389::-;1586:23;;;:415;1532:480;-1:-1:-1;;2022:19:99;;;:34;;;2066:16;;;:31;2022:19;1300:835;-1:-1:-1;1300:835:99:o;2274:335::-;2484:12;;:::i;:::-;-1:-1:-1;;2538:1:99;2512:23;;;:27;2549:16;;;:31;2512:23;2274:335;-1:-1:-1;2274:335:99:o;2751:462::-;2949:12;;:::i;:::-;3000:141;3118:5;:22;;;3000:98;3079:5;:18;;;3000:59;3040:5;:18;;;3007:12;3000:20;;:39;;:59;;;;:::i;:141::-;2977:20;;;:164;-1:-1:-1;;3152:16:99;;;:31;2977:20;2751:462;-1:-1:-1;2751:462:99:o;3345:347::-;3548:12;;:::i;:::-;-1:-1:-1;3576:22:99;;;:45;3631:16;;;:31;3576:22;3345:347;-1:-1:-1;3345:347:99:o;3834:695::-;4044:12;;:::i;:::-;4108:22;;;;4089:14;;;;:42;;;:18;:42;:::i;:::-;4072:14;;;:59;4166:1;4141:22;;;:26;;;4177:20;;;:24;-1:-1:-1;4211:16:99;;:31;;;4281:18;;;;4265:34;;4261:239;;;4343:22;4315:50;;4261:239;;;4402:5;:21;;;4386:12;:37;4382:118;;;4467:22;4439:50;;4382:118;-1:-1:-1;4517:5:99;;3834:695;-1:-1:-1;;;3834:695:99:o;4667:372::-;4876:12;;:::i;:::-;-1:-1:-1;;4921:1:99;4904:14;;;:18;4932:21;;;:36;;;4978:16;;;:31;4904:14;4667:372;-1:-1:-1;4667:372:99:o;5167:341::-;5376:12;;:::i;:::-;-1:-1:-1;;5404:18:99;;;:33;;;5447:16;;;:31;5404:18;5167:341;-1:-1:-1;5167:341:99:o;5638:1679::-;5835:12;;:::i;:::-;5895:25;5924:5;:23;;;5951:1;5924:28;5923:242;;6142:5;:23;;;5923:242;;;5968:171;6000:12;6030:5;:27;;;6075:5;:14;;;6107:5;:18;;;5968:14;:171::i;:::-;6277:17;;;;:23;;;5895:270;;-1:-1:-1;6211:12:99;;6176:24;;6273:305;;;6316:17;6336:60;6359:5;:17;;;6378;6336:22;:60::i;:::-;6316:80;;6434:9;6414:16;:29;6410:158;;6491:22;6463:50;;;6491:22;-1:-1:-1;6410:158:99;6273:305;;6592:5;:23;;;:29;;;:49;;;;;6626:15;6625:16;6592:49;6588:398;;;6657:23;6683:66;6706:5;:23;;;6731:17;6683:22;:66::i;:::-;6657:92;;6787:15;6767:16;:35;6763:213;;6850:22;6822:50;;6763:213;;;6939:22;6911:50;;6763:213;6588:398;;7000:23;;;;6996:292;;7106:171;7138:12;7168:5;:27;;;7213:5;:14;;;7245:5;:18;;;7106:14;:171::i;:::-;7080:23;;;:197;6996:292;-1:-1:-1;7305:5:99;;5638:1679;-1:-1:-1;;;;;;5638:1679:99:o;351:342:98:-;560:6;634:42;659:5;:16;;;634:5;:14;;;:24;;:42;;;;:::i;:::-;603:28;612:5;:18;;;603:8;:28::i;:::-;:73;;;;351:342;-1:-1:-1;;;;;351:342:98:o;796:349::-;1005:6;1079:49;1104:5;:23;;;1079:5;:14;;;:24;;:49;;;;:::i;1252:354::-;1461:6;1535:54;1568:5;:20;;;1535:5;:22;;;:32;;:54;;;;:::i;1710:345::-;1918:6;1992:46;2017:5;:20;;;1992:5;:14;;;:24;;:46;;;;:::i;5820:157:106:-;5875:13;5920:1;5913:4;:8;:13;5912:36;;;;-1:-1:-1;5939:3:106;5932:4;:10;:15;;5912:36;5911:59;;;-1:-1:-1;;5961:3:106;5954:10;;:15;;5820:157::o;4390:175::-;4454:9;;;4518:40;1020:12;4530:9;:27;;4518:40;4497:61;;;;-1:-1:-1;4497:61:106;;-1:-1:-1;4390:175:106;-1:-1:-1;;4390:175:106:o;3920:177::-;4003:14;1020:12;4041:31;4055:4;4061:5;4068:3;4041:13;:31::i;:::-;:49;;3920:177;-1:-1:-1;;;;3920:177:106:o;2045:511::-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;648:1214:77:-;848:6;894:14;878:12;:30;;870:82;;;;-1:-1:-1;;;870:82:77;;;;;;;:::i;:::-;974:21;966:4;:29;;;;;;;;;962:894;;;1018:42;1031:14;1047:12;1018;:42::i;962:894::-;1089:23;1081:4;:31;;;;;;;;;1077:779;;;1135:46;1152:14;1168:12;1135:16;:46::i;1077:779::-;1210:23;1202:4;:31;;;;;;;;;1198:658;;;1256:50;1277:14;1293:12;1256:20;:50::i;1198:658::-;1335:26;1327:4;:34;;;;;;;;;1323:533;;;1384:47;1402:14;1418:12;1384:17;:47::i;1323:533::-;1460:30;1452:4;:38;;;;;;;;;1448:408;;;1513:65;1535:14;1551:12;1565;1513:21;:65::i;1448:408::-;1607:26;1599:4;:34;;;;;;;;;1595:261;;;1684:67;;-1:-1:-1;;;1684:67:77;;;;;;;:::i;1595:261::-;1782:63;;-1:-1:-1;;;1782:63:77;;;;;;;:::i;1357:213:118:-;1413:6;1442:5;;;1466:6;;;;;;:16;;;1481:1;1476;:6;;1466:16;1465:38;;;;1492:1;1488;:5;:14;;;;;1501:1;1497;:5;1488:14;1457:87;;;;-1:-1:-1;;;1457:87:118;;;;;;;:::i;251:523:76:-;343:4;;367:12;:32;;;;;;;;;363:46;;;-1:-1:-1;408:1:76;401:8;;363:46;439:16;423:12;:32;;;;;;;;;419:47;;;-1:-1:-1;;;457:9:76;;419:47;497:16;481:12;:32;;;;;;;;;477:46;;;-1:-1:-1;522:1:76;515:8;;477:46;553:16;537:12;:32;;;;;;;;;533:47;;;-1:-1:-1;;;571:9:76;;533:47;611:16;595:12;:32;;;;;;;;;591:46;;;-1:-1:-1;636:1:76;629:8;;591:46;667:16;651:12;:32;;;;;;;;;647:47;;;-1:-1:-1;;;685:9:76;;647:47;705:62;;-1:-1:-1;;;705:62:76;;;;;;;:::i;1921:1110:77:-;2026:6;2048:14;2065:46;2101:9;2065:35;:46::i;:::-;2048:63;;2121:14;2138:44;2174:7;2138:35;:44::i;:::-;2121:61;;2193:17;2214:49;2253:9;2214:38;:49::i;:::-;2213:63;;2273:3;2213:63;;;2267:3;2213:63;2193:83;;;;2301:6;2291;:16;2287:139;;;2330:85;2404:10;2337:56;2374:9;2385:7;2337:36;:56::i;:::-;2330:73;:85;:73;:85;:::i;:::-;2323:92;;;;;;;2287:139;2436:18;2458:47;2497:7;2458:38;:47::i;:::-;2457:61;;2515:3;2457:61;;;2509:3;2457:61;2436:82;;;-1:-1:-1;2529:20:77;2552:178;2719:10;2559:149;2609:9;2632:66;2678:13;:6;2689:1;2678:13;:10;:13;:::i;:::-;2693:1;2696;2632:45;:66::i;:::-;2559:36;:149::i;2552:178::-;2529:201;;2740:21;2764:170;2922:11;2771:140;2821:59;2867:6;2875:1;2878;2821:45;:59::i;:::-;2894:7;2771:36;:140::i;2764:170::-;2740:194;-1:-1:-1;2952:72:77;2997:25;3020:1;2997:18;:6;3008;2997:18;:10;:18;:::i;:::-;:22;:25;:22;:25;:::i;:::-;2952:33;:13;2970:14;2952:33;:17;:33;:::i;:::-;:37;:72;:37;:72;:::i;:::-;2945:79;1921:1110;-1:-1:-1;;;;;;;;;1921:1110:77:o;3092:204::-;3201:6;3231:57;3284:3;3238:35;3267:5;3239:22;:7;3251:9;3239:22;:11;:22;:::i;:::-;3238:28;:35;:28;:35;:::i;3363:208::-;3476:6;3506:57;3559:3;3513:35;3542:5;3514:22;:7;3526:9;3514:22;:11;:22;:::i;3634:831::-;3744:6;3766:13;3789:15;3814:14;3839:13;3862:15;3887:14;3939:54;3983:9;3939:43;:54::i;:::-;3912:81;-1:-1:-1;3912:81:77;-1:-1:-1;3912:81:77;-1:-1:-1;4030:52:77;4074:7;4030:43;:52::i;:::-;4003:79;-1:-1:-1;4003:79:77;-1:-1:-1;4003:79:77;-1:-1:-1;4106:2:77;4097:11;;4093:52;;;4132:2;4124:10;;4093:52;4159:5;4168:2;4159:11;4155:52;;;4194:2;4186:10;;4155:52;4217:11;4231:32;4238:5;4256;4231:32;:17;:32;:::i;:::-;4217:46;-1:-1:-1;4273:11:77;4287:36;4294:7;4314;4287:36;:19;:36;:::i;:::-;4273:50;-1:-1:-1;4333:11:77;4347:34;4354:6;4373;4347:34;:18;:34;:::i;:::-;4333:48;-1:-1:-1;4400:57:77;4453:3;4401:41;4437:4;4401:31;4419:12;:4;4428:2;4419:12;:8;:12;:::i;:::-;4401:13;:4;4410:3;4401:13;:8;:13;:::i;4400:57::-;4392:66;3634:831;-1:-1:-1;;;;;;;;;;;;3634:831:77:o;4533:1003::-;4669:6;4691:13;4714:15;4739:14;4764:13;4787:15;4812:14;4864:54;4908:9;4864:43;:54::i;:::-;4837:81;-1:-1:-1;4837:81:77;-1:-1:-1;4837:81:77;-1:-1:-1;4955:52:77;4999:7;4955:43;:52::i;:::-;4928:79;-1:-1:-1;4928:79:77;-1:-1:-1;4928:79:77;-1:-1:-1;5031:53:77;5074:9;5031:42;:53::i;:::-;5022:5;:62;5018:103;;;5108:2;5100:10;;5018:103;5148:12;5137:7;:23;:39;;;;;5164:7;5175:1;5164:12;5137:39;5135:42;:106;;;;;5190:51;5233:7;5190:42;:51::i;:::-;5181:5;:60;5135:106;5131:147;;;5265:2;5257:10;;5131:147;5288:11;5302:32;5309:5;5327;5302:32;:17;:32;:::i;:::-;5288:46;-1:-1:-1;5344:11:77;5358:36;5365:7;5385;5358:36;:19;:36;:::i;:::-;5344:50;-1:-1:-1;5404:11:77;5418:34;5425:6;5444;5418:34;:18;:34;:::i;:::-;5404:48;-1:-1:-1;5471:57:77;5524:3;5472:41;5508:4;5472:31;5490:12;:4;5499:2;5490:12;:8;:12;:::i;5471:57::-;5463:66;4533:1003;-1:-1:-1;;;;;;;;;;;;;4533:1003:77:o;7079:135:106:-;7135:9;7167:40;1020:12;7179:9;:27;;7167:40;-1:-1:-1;7156:51:106;;7079:135;-1:-1:-1;;;7079:135:106:o;5630:185::-;5689:13;;5730:40;1020:12;5742:9;:27;;5730:40;5714:56;;;;5791:17;5803:4;5791:11;:17::i;12485:210::-;12564:10;12611:11;12594:13;:28;;12586:37;;;;;;-1:-1:-1;1020:12:106;12642:27;;;12641:47;;12485:210::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;867:176:117:-;925:7;956:5;;;979:6;;;;971:46;;;;-1:-1:-1;;;971:46:117;;;;;;;:::i;1307:134::-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;1651:210:118:-;1707:6;1736:5;;;1760:6;;;;;;:16;;;1775:1;1770;:6;;1760:16;1759:38;;;;1786:1;1782;:5;:14;;;;;1795:1;1791;:5;1782:14;1751:84;;;;-1:-1:-1;;;1751:84:118;;;;;;;:::i;3066:130:117:-;3124:7;3150:39;3154:1;3157;3150:39;;;;;;;;;;;;;;;;;:3;:39::i;325:554:118:-;381:6;621;617:45;;-1:-1:-1;650:1:118;643:8;;617:45;682:1;-1:-1:-1;;682:7:118;:27;;;;;-1:-1:-1;;;693:1:118;:16;682:27;680:30;672:82;;;;-1:-1:-1;;;672:82:118;;;;;;;:::i;:::-;776:5;;;780:1;776;:5;:1;799:5;;;;;:10;791:62;;;;-1:-1:-1;;;791:62:118;;;;;;;:::i;1725:187:117:-;1811:7;1846:12;1838:6;;;;1830:29;;;;-1:-1:-1;;;1830:29:117;;;;;;;;:::i;:::-;-1:-1:-1;;;1881:5:117;;;1725:187::o;3671:338::-;3757:7;3857:12;3850:5;3842:28;;;;-1:-1:-1;;;3842:28:117;;;;;;;;:::i;:::-;;3880:9;3896:1;3892;:5;;;;;;;3671:338;-1:-1:-1;;;;;3671:338:117:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;49987:54;;51671:35;;51661:2;;51720:1;;51710:12;410:184;504:20;;52074:1;52064:12;;52054:2;;52090:1;;52080:12;601:158;682:20;;707:47;682:20;707:47;:::i;766:180::-;858:20;;883:58;858:20;883:58;:::i;1335:166::-;1420:20;;52690:2;52680:13;;52670:2;;52707:1;;52697:12;1508:166;1593:20;;52810:2;52800:13;;52790:2;;52827:1;;52817:12;1681:162;1764:20;;52928:1;52918:12;;52908:2;;52944:1;;52934:12;2854:164;;2969:4;2960:6;2955:3;2951:16;2947:27;2944:2;;;-1:-1;;2977:12;2944:2;-1:-1;2997:15;2937:81;-1:-1;2937:81::o;8701:826::-;;8826:4;8814:9;8809:3;8805:19;8801:30;8798:2;;;-1:-1;;8834:12;8798:2;8862:20;8826:4;8862:20;:::i;:::-;8853:29;;353:6;340:20;8948:16;8941:75;9080:2;9138:9;9134:22;340:20;9080:2;9099:5;9095:16;9088:75;9225:2;9310:9;9306:22;1047:20;1072:60;1126:5;1072:60;:::i;:::-;9225:2;9240:16;;9233:102;9396:2;9477:22;;1047:20;1072:60;1047:20;1072:60;:::i;:::-;9396:2;9411:16;;9404:102;9415:5;8792:735;-1:-1;;8792:735::o;9551:755::-;;9662:4;9650:9;9645:3;9641:19;9637:30;9634:2;;;-1:-1;;9670:12;9634:2;9698:20;9662:4;9698:20;:::i;:::-;9689:29;;14590:6;14577:20;9779:16;9772:75;9905:2;9970:9;9966:22;858:20;883:58;935:5;883:58;:::i;:::-;9905:2;9920:16;;9913:82;10053:2;10114:22;;682:20;707:47;682:20;707:47;:::i;:::-;10053:2;10068:16;;10061:82;10205:2;10256:22;;206:20;231:30;206:20;231:30;:::i;10329:606::-;;10439:4;10427:9;10422:3;10418:19;10414:30;10411:2;;;-1:-1;;10447:12;10411:2;10475:20;10439:4;10475:20;:::i;:::-;10466:29;;14590:6;14577:20;10556:16;10549:75;10682:2;10747:9;10743:22;858:20;883:58;935:5;883:58;:::i;:::-;10682:2;10697:16;;10690:82;10834:2;10885:22;;206:20;49122:13;;49115:21;51792:32;;51782:2;;-1:-1;;51828:12;51782:2;10834;10849:16;;10842:72;10853:5;10405:530;-1:-1;;10405:530::o;10963:158::-;;11073:3;11064:6;11059:3;11055:16;11051:26;11048:2;;;-1:-1;;11080:12;14647:241;;14751:2;14739:9;14730:7;14726:23;14722:32;14719:2;;;-1:-1;;14757:12;14719:2;14819:53;14864:7;14840:22;14819:53;:::i;14895:241::-;;14999:2;14987:9;14978:7;14974:23;14970:32;14967:2;;;-1:-1;;15005:12;14967:2;-1:-1;340:20;;14961:175;-1:-1;14961:175::o;15143:699::-;;;;;15339:3;15327:9;15318:7;15314:23;15310:33;15307:2;;;-1:-1;;15346:12;15307:2;353:6;340:20;15398:63;;15498:2;15568:9;15564:22;504:20;52074:1;52067:5;52064:12;52054:2;;-1:-1;;52080:12;52054:2;15506:90;-1:-1;15633:2;15686:22;;682:20;707:47;682:20;707:47;:::i;:::-;15301:541;;;;-1:-1;15641:77;;15755:2;15794:22;14577:20;;-1:-1;;15301:541::o;15849:909::-;;;;;;16101:4;16089:9;16080:7;16076:23;16072:34;16069:2;;;-1:-1;;16109:12;16069:2;353:6;340:20;16161:63;;16279:84;16355:7;16261:2;16335:9;16331:22;16279:84;:::i;:::-;16269:94;;16420:79;16491:7;16400:4;16471:9;16467:22;16420:79;:::i;:::-;16410:89;;16536:4;16578:9;16574:22;206:20;231:30;255:5;231:30;:::i;:::-;16546:60;-1:-1;16663:79;16734:7;16643:4;16710:22;;16663:79;:::i;:::-;16653:89;;16063:695;;;;;;;;:::o;16765:293::-;;16895:2;16883:9;16874:7;16870:23;16866:32;16863:2;;;-1:-1;;16901:12;16863:2;695:6;682:20;707:47;748:5;707:47;:::i;17065:588::-;;;;17251:3;17239:9;17230:7;17226:23;17222:33;17219:2;;;-1:-1;;17258:12;17219:2;695:6;682:20;707:47;748:5;707:47;:::i;:::-;17310:89;-1:-1;17436:2;17475:22;;14577:20;;-1:-1;17562:75;17629:7;17544:2;17605:22;;17562:75;:::i;:::-;17552:85;;17213:440;;;;;:::o;17660:271::-;;17779:2;17767:9;17758:7;17754:23;17750:32;17747:2;;;-1:-1;;17785:12;17747:2;2319:6;2306:20;2331:48;2373:5;2331:48;:::i;17938:396::-;;;18074:2;18062:9;18053:7;18049:23;18045:32;18042:2;;;-1:-1;;18080:12;18042:2;2319:6;2306:20;2331:48;2373:5;2331:48;:::i;:::-;18132:78;18247:2;18286:22;;;;14577:20;;-1:-1;;;18036:298::o;18341:305::-;;18476:4;18464:9;18455:7;18451:23;18447:34;18444:2;;;-1:-1;;18484:12;18444:2;18546:84;18622:7;18598:22;18546:84;:::i;18653:738::-;;;;;18865:4;18853:9;18844:7;18840:23;18836:34;18833:2;;;-1:-1;;18873:12;18833:2;18935:84;19011:7;18987:22;18935:84;:::i;:::-;18925:94;;19076:79;19147:7;19056:4;19127:9;19123:22;19076:79;:::i;:::-;18827:564;;19066:89;;-1:-1;;;;19192:4;19233:22;;340:20;;19302:4;19343:22;340:20;;18827:564::o;19398:589::-;;;;19582:4;19570:9;19561:7;19557:23;19553:34;19550:2;;;-1:-1;;19590:12;19550:2;19652:84;19728:7;19704:22;19652:84;:::i;:::-;19642:94;;19773:4;19818:9;19814:22;14577:20;19783:63;;19883:4;19943:9;19939:22;2306:20;2331:48;2373:5;2331:48;:::i;:::-;19893:78;;;;19544:443;;;;;:::o;19994:559::-;;;;20163:4;20151:9;20142:7;20138:23;20134:34;20131:2;;;-1:-1;;20171:12;20131:2;20233:84;20309:7;20285:22;20233:84;:::i;:::-;20223:94;20354:4;20395:22;;14577:20;;-1:-1;20464:4;20505:22;;;14577:20;;20125:428;-1:-1;;;20125:428::o;20560:716::-;;;;;20761:4;20749:9;20740:7;20736:23;20732:34;20729:2;;;-1:-1;;20769:12;20729:2;20831:84;20907:7;20883:22;20831:84;:::i;:::-;20821:94;;20952:4;20997:9;20993:22;14577:20;20962:63;;21062:4;21107:9;21103:22;14577:20;21072:63;;21172:4;21232:9;21228:22;2306:20;2331:48;2373:5;2331:48;:::i;:::-;20723:553;;;;-1:-1;20723:553;;-1:-1;;20723:553::o;21283:301::-;;21416:4;21404:9;21395:7;21391:23;21387:34;21384:2;;;-1:-1;;21424:12;21384:2;3205:22;3220:6;3205:22;:::i;:::-;3317:67;3380:3;3356:22;3317:67;:::i;:::-;3299:16;3292:93;3483:63;3542:3;3450:2;3522:9;3518:22;3483:63;:::i;:::-;3450:2;3469:5;3465:16;3458:89;3649:67;3712:3;3616:2;3692:9;3688:22;3649:67;:::i;:::-;3616:2;3635:5;3631:16;3624:93;3825:73;3894:3;3792:2;3874:9;3870:22;3825:73;:::i;:::-;3792:2;3811:5;3807:16;3800:99;4011:76;4083:3;3977;4063:9;4059:22;4011:76;:::i;:::-;3977:3;3997:5;3993:16;3986:102;4199:75;4270:3;4165;4250:9;4246:22;4199:75;:::i;:::-;4165:3;4185:5;4181:16;4174:101;4376:65;4437:3;4342;4417:9;4413:22;4376:65;:::i;:::-;4342:3;4362:5;4358:16;4351:91;4541:49;4586:3;4507;4566:9;4562:22;4541:49;:::i;:::-;4507:3;4527:5;4523:16;4516:75;4666:3;4702:49;4747:3;4666;4727:9;4723:22;4702:49;:::i;:::-;4682:18;;;4675:77;4825:3;4882:22;;;14577:20;4841:18;;;4834:77;4978:3;5035:22;;;14577:20;4994:18;;;4987:77;5140:3;5197:22;;;14577:20;5156:18;;;5149:77;5295:3;5352:22;;;14577:20;5311:18;;;5304:77;5447:3;5504:22;;;14577:20;5463:18;;;5456:77;5617:3;5674:22;;;14577:20;5633:18;;;5626:77;5788:3;5845:22;;;14577:20;5804:18;;;5797:77;5954:3;6011:22;;;14577:20;5970:18;;;5963:77;6109:3;6165:22;;;2759:20;6125:18;;;6118:76;6261:3;6317:22;;;2759:20;6277:18;;;6270:76;6411:3;6467:22;;;2759:20;6427:18;;;6420:76;6570:3;6626:22;;;2759:20;6586:18;;;6579:76;6722:3;6778:22;;;2759:20;6738:18;;;6731:76;6875:3;6911:70;6977:3;6953:22;;;6911:70;:::i;:::-;6891:18;;;6884:98;7056:3;7092:70;7158:3;7134:22;;;7092:70;:::i;:::-;7083:6;7076:5;7072:18;7065:98;7236:3;7272:70;7338:3;7236;7318:9;7314:22;7272:70;:::i;:::-;7263:6;7256:5;7252:18;7245:98;7412:3;7448:70;7514:3;7412;7494:9;7490:22;7448:70;:::i;:::-;7056:3;7432:5;7428:18;7421:98;7627:70;7693:3;7590:4;7673:9;7669:22;7627:70;:::i;:::-;7618:6;7611:5;7607:18;7600:98;7809:71;7876:3;7772:4;7856:9;7852:22;7809:71;:::i;:::-;7800:6;7793:5;7789:18;7782:99;7993:71;8060:3;7956:4;8040:9;8036:22;7993:71;:::i;:::-;7236:3;7977:5;7973:18;7966:99;8172:71;8239:3;8135:4;8219:9;8215:22;8172:71;:::i;:::-;8163:6;8156:5;8152:18;8145:99;8357:85;8438:3;8320:4;8418:9;8414:22;8357:85;:::i;:::-;8348:6;8341:5;8337:18;8330:113;8556:85;8637:3;8519:4;8617:9;8613:22;8556:85;:::i;:::-;8536:18;;;8529:113;-1:-1;8540:5;;21378:206;-1:-1;;;;21378:206::o;21591:286::-;;21717:3;21705:9;21696:7;21692:23;21688:33;21685:2;;;-1:-1;;21724:12;21685:2;21786:75;21853:7;21829:22;21786:75;:::i;21884:283::-;;22009:2;21997:9;21988:7;21984:23;21980:32;21977:2;;;-1:-1;;22015:12;21977:2;22077:74;22143:7;22119:22;22077:74;:::i;22174:290::-;;22302:3;;22290:9;22281:7;22277:23;22273:33;22270:2;;;-1:-1;;22309:12;22270:2;11298:22;22302:3;11298:22;:::i;:::-;11417:74;11487:3;11463:22;11417:74;:::i;:::-;11392:100;;11559:2;11613:22;;;14577:20;11574:16;;;11567:75;11716:2;11770:22;;;14577:20;11731:16;;;11724:75;11868:2;11922:22;;;14577:20;11883:16;;;11876:75;12020:3;12075:22;;;14577:20;12036:16;;;12029:75;12176:3;12231:22;;;14577:20;12192:16;;;12185:75;12330:3;12385:22;;;14577:20;12346:16;;;12339:75;12488:3;12542:22;;;2759:20;12504:16;;;12497:74;12643:3;12699:22;;;2759:20;12659:18;;;12652:76;12795:3;12851:22;;;2759:20;12811:18;;;12804:76;12956:3;13012:22;;;2759:20;12972:18;;;12965:76;13123:3;13179:22;;;2759:20;13139:18;;;13132:76;13290:3;13346:22;;;2759:20;13306:18;;;13299:76;13462:3;13518:22;;;2759:20;13478:18;;;13471:76;13618:3;13674:22;;;2759:20;13634:18;;;13627:76;13776:3;13832:22;;;2759:20;13792:18;;;13785:76;13926:3;13982:22;;;2759:20;13942:18;;;13935:76;14085:3;14141:22;;;2759:20;14101:18;;;14094:76;14239:3;14295:22;;;2759:20;14255:18;;;14248:76;14397:3;14453:22;;;2759:20;14413:18;;;14406:76;;;;-1:-1;11399:16;;22264:200;-1:-1;;22264:200::o;22471:699::-;;;;;22667:3;22655:9;22646:7;22642:23;22638:33;22635:2;;;-1:-1;;22674:12;22635:2;14590:6;14577:20;22726:63;;22844:80;22916:7;22826:2;22896:9;22892:22;22844:80;:::i;24429:162::-;51228:1;51221:5;51218:12;51208:2;;51234:9;51208:2;24513:73;;24507:84::o;36929:370::-;37106:2;37120:47;;;48314:12;;37091:18;;;48718:19;;;36929:370;;37106:2;48168:14;;;;48758;;;;36929:370;23798:260;23823:6;23820:1;23817:13;23798:260;;;23884:13;;24260:37;;48573:14;;;;23331;;;;23845:1;23838:9;23798:260;;;-1:-1;37173:116;;37077:222;-1:-1;;;;;;37077:222::o;37306:210::-;49122:13;;49115:21;24153:34;;37427:2;37412:18;;37398:118::o;37523:222::-;24260:37;;;37650:2;37635:18;;37621:124::o;37752:254::-;37895:2;37880:18;;51344:2;51334:13;;51324:2;;51351:9;51324:2;24685:66;;;37866:140;:::o;38013:270::-;38164:2;38149:18;;51469:1;51459:12;;51449:2;;51475:9;38290:359;38458:2;38443:18;;51582:2;51572:13;;51562:2;;51589:9;51562:2;25028:63;;;38635:2;38620:18;24260:37;38429:220;:::o;38881:310::-;;39028:2;;39049:17;39042:47;25472:5;48314:12;48730:6;39028:2;39017:9;39013:18;48718:19;-1:-1;50825:101;50839:6;50836:1;50833:13;50825:101;;;50906:11;;;;;50900:18;50887:11;;;48758:14;50887:11;50880:39;50854:10;;50825:101;;;50941:6;50938:1;50935:13;50932:2;;;-1:-1;48758:14;50997:6;39017:9;50988:16;;50981:27;50932:2;-1:-1;51113:7;51097:14;-1:-1;;51093:28;25630:39;;;;48758:14;25630:39;;38999:192;-1:-1;;;38999:192::o;39198:416::-;39398:2;39412:47;;;25906:2;39383:18;;;48718:19;25942:34;48758:14;;;25922:55;-1:-1;;;25997:12;;;25990:38;26047:12;;;39369:245::o;39621:416::-;39821:2;39835:47;;;26298:2;39806:18;;;48718:19;26334:34;48758:14;;;26314:55;-1:-1;;;26389:12;;;26382:38;26439:12;;;39792:245::o;40044:416::-;40244:2;40258:47;;;26690:2;40229:18;;;48718:19;26726:34;48758:14;;;26706:55;-1:-1;;;26781:12;;;26774:39;26832:12;;;40215:245::o;40467:416::-;40667:2;40681:47;;;27083:2;40652:18;;;48718:19;27119:34;48758:14;;;27099:55;-1:-1;;;27174:12;;;27167:45;27231:12;;;40638:245::o;40890:416::-;41090:2;41104:47;;;27482:2;41075:18;;;48718:19;27518:29;48758:14;;;27498:50;27567:12;;;41061:245::o;41313:416::-;41513:2;41527:47;;;27818:2;41498:18;;;48718:19;27854:34;48758:14;;;27834:55;-1:-1;;;27909:12;;;27902:42;27963:12;;;41484:245::o;41736:416::-;41936:2;41950:47;;;28214:2;41921:18;;;48718:19;28250:34;48758:14;;;28230:55;-1:-1;;;28305:12;;;28298:25;28342:12;;;41907:245::o;42159:416::-;42359:2;42373:47;;;28593:2;42344:18;;;48718:19;28629:34;48758:14;;;28609:55;-1:-1;;;28684:12;;;28677:44;28740:12;;;42330:245::o;42582:416::-;42782:2;42796:47;;;28991:2;42767:18;;;48718:19;29027:34;48758:14;;;29007:55;-1:-1;;;29082:12;;;29075:31;29125:12;;;42753:245::o;43005:416::-;43205:2;43219:47;;;29376:2;43190:18;;;48718:19;29412:34;48758:14;;;29392:55;29481:27;29467:12;;;29460:49;29528:12;;;43176:245::o;43428:416::-;43628:2;43642:47;;;29779:2;43613:18;;;48718:19;29815:34;48758:14;;;29795:55;-1:-1;;;29870:12;;;29863:41;29923:12;;;43599:245::o;43851:416::-;44051:2;44065:47;;;30174:2;44036:18;;;48718:19;30210:34;48758:14;;;30190:55;-1:-1;;;30265:12;;;30258:31;30308:12;;;44022:245::o;44274:416::-;44474:2;44488:47;;;30559:2;44459:18;;;48718:19;30595:34;48758:14;;;30575:55;-1:-1;;;30650:12;;;30643:31;30693:12;;;44445:245::o;44697:416::-;44897:2;44911:47;;;30944:2;44882:18;;;48718:19;30980:34;48758:14;;;30960:55;-1:-1;;;31035:12;;;31028:30;31077:12;;;44868:245::o;45120:416::-;45320:2;45334:47;;;31328:2;45305:18;;;48718:19;31364:34;48758:14;;;31344:55;31433:25;31419:12;;;31412:47;31478:12;;;45291:245::o;45543:416::-;45743:2;45757:47;;;31729:2;45728:18;;;48718:19;31765:34;48758:14;;;31745:55;31834:34;31820:12;;;31813:56;-1:-1;;;31889:12;;;31882:29;31930:12;;;45714:245::o;45966:416::-;46166:2;46180:47;;;32181:2;46151:18;;;48718:19;32217:34;48758:14;;;32197:55;-1:-1;;;32272:12;;;32265:28;32312:12;;;46137:245::o;46389:416::-;46589:2;46603:47;;;32563:2;46574:18;;;48718:19;32599:34;48758:14;;;32579:55;32668:26;32654:12;;;32647:48;32714:12;;;46560:245::o;46812:416::-;47012:2;47026:47;;;32965:2;46997:18;;;48718:19;33001:34;48758:14;;;32981:55;-1:-1;;;33056:12;;;33049:28;33096:12;;;46983:245::o;47235:319::-;;47410:3;47399:9;47395:19;47387:27;;33410:86;33481:14;33387:16;33381:23;33410:86;:::i;:::-;33581:4;33570:16;;;33564:23;33641:14;;;24260:37;33748:4;33737:16;;;33731:23;33808:14;;;24260:37;33910:4;33899:16;;;33893:23;33970:14;;;24260:37;34072:4;34061:16;;;34055:23;34132:14;;;24260:37;34237:4;34226:16;;;34220:23;34297:14;;;24260:37;34400:4;34389:16;;;34383:23;34460:14;;;24260:37;34567:4;34556:16;;;34550:23;34625:14;;;24260:37;34730:6;34719:18;;;34713:25;34790:16;;;24260:37;34892:6;34881:18;;;34875:25;34952:16;;;24260:37;35063:6;35052:18;;;35046:25;35123:16;;;24260:37;35240:6;35229:18;;;35223:25;35300:16;;;24260:37;35417:6;35406:18;;;35400:25;35477:16;;;24260:37;35599:6;35588:18;;;35582:25;35659:16;;;24260:37;35765:6;35754:18;;;35748:25;35825:16;;;24260:37;35933:6;35922:18;;;35916:25;35993:16;;;24260:37;36093:6;36082:18;;;36076:25;36153:16;;;24260:37;36262:6;36251:18;;;36245:25;36322:16;;;24260:37;36426:6;36415:18;;;36409:25;36486:16;;;24260:37;36594:6;36583:18;;;36577:25;36654:16;;;;24260:37;;;;47381:173;:::o;47790:256::-;47852:2;47846:9;47878:17;;;47953:18;47938:34;;47974:22;;;47935:62;47932:2;;;48010:1;;48000:12;47932:2;47852;48019:22;47830:216;;-1:-1;47830:216::o;51736:111::-;51817:5;49122:13;49115:21;51795:5;51792:32;51782:2;;51838:1;;51828:12;51782:2;51776:71;:::o;52106:108::-;52189:1;52182:5;52179:12;52169:2;;52205:1;;52195:12;52221:119;52315:1;52308:5;52305:12;52295:2;;52331:1;;52321:12;52347:121;52443:1;52436:5;52433:12;52423:2;;52459:1;;52449:12;53212:110;53296:2;53289:5;53286:13;53276:2;;53313:1;;53303:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../../Core/Core.sol\";\nimport \"./ICERTFEngine.sol\";\nimport \"./CERTFSTF.sol\";\nimport \"./CERTFPOF.sol\";\n\n\n/**\n * @title CERTFEngine\n * @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a CERTF contract\n * @dev All numbers except unix timestamp are represented as multiple of 10 ** 18\n */\ncontract CERTFEngine is Core, CERTFSTF, CERTFPOF, ICERTFEngine {\n\n    function contractType() external pure override returns (ContractType) {\n        return ContractType.CERTF;\n    }\n\n    /**\n     * Applys an event to the current state of a contract and returns the resulting contract state.\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event to be applied to the contract state\n     * @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n     * @return the resulting contract state\n     */\n    function computeStateForEvent(\n        CERTFTerms calldata terms,\n        State calldata state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        external\n        pure\n        override\n        returns (State memory)\n    {\n        return stateTransitionFunction(\n            terms,\n            state,\n            _event,\n            externalData\n        );\n    }\n\n    /**\n     * Evaluates the payoff for an event under the current state of the contract.\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which the payoff should be evaluated\n     * @param externalData external data needed for POF evaluation (e.g. fxRate)\n     * @return the payoff of the event\n     */\n    function computePayoffForEvent(\n        CERTFTerms calldata terms,\n        State calldata state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        external\n        pure\n        override\n        returns (int256)\n    {\n        // if alternative settlementCurrency is set then apply fxRate to payoff\n        if (terms.settlementCurrency != address(0) && terms.currency != terms.settlementCurrency) {\n            return payoffFunction(\n                terms,\n                state,\n                _event,\n                externalData\n            ).floatMult(int256(externalData));\n        }\n\n        return payoffFunction(\n            terms,\n            state,\n            _event,\n            externalData\n        );\n    }\n\n    /**\n     * @notice Initialize contract state space based on the contract terms.\n     * @param terms terms of the contract\n     * @return the initial state of the contract\n     */\n    function computeInitialState(CERTFTerms calldata terms)\n        external\n        pure\n        override\n        returns (State memory)\n    {\n        State memory state;\n\n        state.quantity = 0;\n        state.exerciseQuantity = 0;\n        state.marginFactor = ONE_POINT_ZERO;\n        state.adjustmentFactor = ONE_POINT_ZERO;\n        state.lastCouponDay = terms.issueDate;\n        state.couponAmountFixed = 0;\n\n        state.contractPerformance = ContractPerformance.PF;\n        state.statusDate = terms.statusDate;\n\n        return state;\n    }\n\n    /**\n     * @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param segmentStart start timestamp of the segment\n     * @param segmentEnd end timestamp of the segement\n     * @return segment of the non-cyclic schedule\n     */\n    function computeNonCyclicScheduleSegment(\n        CERTFTerms calldata terms,\n        uint256 segmentStart,\n        uint256 segmentEnd\n    )\n        external\n        pure\n        override\n        returns (bytes32[] memory)\n    {\n        bytes32[MAX_EVENT_SCHEDULE_SIZE] memory events;\n        uint16 index;\n\n        // issue date\n        if (terms.issueDate != 0) {\n            if (isInSegment(terms.issueDate, segmentStart, segmentEnd)) {\n                events[index] = encodeEvent(EventType.ID, terms.issueDate);\n                index++;\n            }\n        }\n\n        // initial exchange\n        if (terms.initialExchangeDate != 0) {\n            if (isInSegment(terms.initialExchangeDate, segmentStart, segmentEnd)) {\n                events[index] = encodeEvent(EventType.IED, terms.initialExchangeDate);\n                index++;\n            }\n        }\n\n        // maturity event\n        if (terms.maturityDate != 0) {\n            if (isInSegment(terms.maturityDate, segmentStart, segmentEnd) == true) {\n                events[index] = encodeEvent(EventType.MD, terms.maturityDate);\n                index++;\n            }\n        }\n\n        // remove null entries from returned array\n        bytes32[] memory schedule = new bytes32[](index);\n        for (uint256 i = 0; i < index; i++) {\n            schedule[i] = events[i];\n        }\n\n        return schedule;\n    }\n\n    /**\n     * @notice Computes a schedule segment of cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param segmentStart start timestamp of the segment\n     * @param segmentEnd end timestamp of the segement\n     * @param eventType eventType of the cyclic schedule\n     * @return event schedule segment\n     */\n    function computeCyclicScheduleSegment(\n        CERTFTerms calldata terms,\n        uint256 segmentStart,\n        uint256 segmentEnd,\n        EventType eventType\n    )\n        external\n        pure\n        override\n        returns(bytes32[] memory)\n    {\n        bytes32[MAX_EVENT_SCHEDULE_SIZE] memory events;\n        uint256 index;\n\n        if (eventType == EventType.CFD) {\n            if (terms.cycleAnchorDateOfCoupon != 0) {\n                uint256[MAX_CYCLE_SIZE] memory couponSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfCoupon,\n                    (terms.maturityDate > 0) ? terms.maturityDate : segmentEnd,\n                    terms.cycleOfCoupon,\n                    terms.endOfMonthConvention,\n                    (terms.maturityDate > 0) ? true : false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (couponSchedule[i] == 0) break;\n                    if (isInSegment(couponSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.CFD, couponSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n         if (eventType == EventType.CPD) {\n            if (terms.cycleAnchorDateOfCoupon != 0) {\n                uint256[MAX_CYCLE_SIZE] memory couponSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfCoupon,\n                    (terms.maturityDate > 0) ? terms.maturityDate : segmentEnd,\n                    terms.cycleOfCoupon,\n                    terms.endOfMonthConvention,\n                    (terms.maturityDate > 0) ? true : false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (couponSchedule[i] == 0) break;\n                    uint256 couponPaymentDayScheduleTime = getTimestampPlusPeriod(terms.settlementPeriod, couponSchedule[i]);\n                    if (isInSegment(couponPaymentDayScheduleTime, segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.CFD, couponPaymentDayScheduleTime);\n                    index++;\n                }\n            }\n        }\n\n        if (eventType == EventType.RFD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256[MAX_CYCLE_SIZE] memory redemptionSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfRedemption,\n                    (terms.maturityDate > 0) ? terms.maturityDate : segmentEnd,\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    (terms.maturityDate > 0) ? true : false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (redemptionSchedule[i] == 0) break;\n                    if (isInSegment(redemptionSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.RFD, redemptionSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        if (eventType == EventType.RPD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256[MAX_CYCLE_SIZE] memory redemptionSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfRedemption,\n                    (terms.maturityDate > 0) ? terms.maturityDate : segmentEnd,\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    (terms.maturityDate > 0) ? true : false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (redemptionSchedule[i] == 0) break;\n                    uint256 redemptionPaymentDayScheduleTime = getTimestampPlusPeriod(terms.settlementPeriod, redemptionSchedule[i]);\n                    if (isInSegment(redemptionPaymentDayScheduleTime, segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.RPD, redemptionPaymentDayScheduleTime);\n                    index++;\n                }\n            }\n        }\n\n        if (eventType == EventType.XD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256[MAX_CYCLE_SIZE] memory redemptionSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfRedemption,\n                    (terms.maturityDate > 0) ? terms.maturityDate : segmentEnd,\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    (terms.maturityDate > 0) ? true : false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (redemptionSchedule[i] == 0) break;\n                    if (redemptionSchedule[i] == terms.maturityDate) continue;\n                    uint256 executionDateScheduleTime = getTimestampPlusPeriod(terms.exercisePeriod, redemptionSchedule[i]);\n                    if (isInSegment(executionDateScheduleTime, segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.XD, executionDateScheduleTime);\n                    index++;\n                }\n            }\n        }\n\n        // remove null entries from returned array\n        bytes32[] memory schedule = new bytes32[](index);\n        for (uint256 i = 0; i < index; i++) {\n            schedule[i] = events[i];\n        }\n\n        return schedule;\n    }\n\n    /**\n     * @notice Computes a schedule segment of cyclic contract events based on the contract terms\n     * and the specified timestamps.\n     * @param terms terms of the contract\n     * @param lastScheduleTime last occurrence of cyclic event\n     * @param eventType eventType of the cyclic schedule\n     * @return event schedule segment\n     */\n    function computeNextCyclicEvent(\n        CERTFTerms calldata terms,\n        uint256 lastScheduleTime,\n        EventType eventType\n    )\n        external\n        pure\n        override\n        returns(bytes32)\n    {\n        if (eventType == EventType.CFD) {\n            if (terms.cycleAnchorDateOfCoupon != 0) {\n                uint256 nextCouponDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfCoupon,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfCoupon,\n                    lastScheduleTime\n                );\n                if (nextCouponDate == uint256(0)) return bytes32(0);\n                return encodeEvent(EventType.CFD, nextCouponDate);\n            }\n        }\n\n         if (eventType == EventType.CPD) {\n            if (terms.cycleAnchorDateOfCoupon != 0) {\n                uint256 nextCouponDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfCoupon,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfCoupon,\n                    lastScheduleTime\n                );\n                if (nextCouponDate == uint256(0)) return bytes32(0);\n                uint256 couponPaymentDayScheduleTime = getTimestampPlusPeriod(terms.settlementPeriod, nextCouponDate);\n                return encodeEvent(EventType.CFD, couponPaymentDayScheduleTime);\n            }\n        }\n\n        if (eventType == EventType.RFD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256 nextRedemptionDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfRedemption,\n                    lastScheduleTime\n                );\n                if (nextRedemptionDate == uint256(0)) return bytes32(0);\n                return encodeEvent(EventType.RFD, nextRedemptionDate);\n            }\n        }\n\n        if (eventType == EventType.RPD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256 nextRedemptionDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfRedemption,\n                    lastScheduleTime\n                );\n                if (nextRedemptionDate == uint256(0)) return bytes32(0);\n                uint256 redemptionPaymentDayScheduleTime = getTimestampPlusPeriod(terms.settlementPeriod, nextRedemptionDate);\n                return encodeEvent(EventType.RPD, redemptionPaymentDayScheduleTime);\n            }\n        }\n\n        if (eventType == EventType.XD) {\n            if (terms.cycleAnchorDateOfRedemption != 0) {\n                uint256 nextRedemptionDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfRedemption,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfRedemption,\n                    lastScheduleTime\n                );\n                if (nextRedemptionDate == uint256(0)) return bytes32(0);\n                if (nextRedemptionDate == terms.maturityDate) return bytes32(0);\n                uint256 executionDateScheduleTime = getTimestampPlusPeriod(terms.exercisePeriod, nextRedemptionDate);\n                return encodeEvent(EventType.XD, executionDateScheduleTime);\n            }\n        }\n\n       return bytes32(0);\n    }\n\n    /**\n     * @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n     * contract and the current state of the underlying.\n     * param _event event for which to check if its still scheduled\n     * param terms terms of the contract\n     * param state current state of the contract\n     * param hasUnderlying boolean indicating whether the contract has an underlying contract\n     * param underlyingState state of the underlying (empty state object if non-existing)\n     * @return boolean indicating whether event is still scheduled\n     */\n    function isEventScheduled(\n        bytes32 /* _event */,\n        CERTFTerms calldata /* terms */,\n        State calldata /* state */,\n        bool /* hasUnderlying */,\n        State calldata /* underlyingState */\n    )\n        external\n        pure\n        override\n        returns (bool)\n    {\n        return true;\n    }\n\n    /**\n     * @notice Implements abstract method which is defined in BaseEngine.\n     * Applies an event to the current state of the contract and returns the resulting state.\n     * The inheriting Engine contract has to map the events type to the designated STF.\n     * todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which to evaluate the next state for\n     * @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n     * @return the resulting contract state\n     */\n    function stateTransitionFunction(\n        CERTFTerms memory terms,\n        State memory state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        if (eventType == EventType.ID) return STF_CERTF_ID(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IED) return STF_CERTF_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CFD) return STF_CERTF_CFD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CPD) return STF_CERTF_CPD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RFD) return STF_CERTF_RFD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.XD) return STF_CERTF_XD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RPD) return STF_CERTF_RPD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return STF_CERTF_TD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.MD) return STF_CERTF_MD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CE) return STF_CERTF_CE(terms, state, scheduleTime, externalData);\n\n        revert(\"CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\");\n    }\n\n    /**\n     * @notice Implements abstract method which is defined in BaseEngine.\n     * Computes the payoff for an event under the current state of the contract.\n     * The inheriting Engine contract has to map the events type to the designated POF.\n     * @param terms terms of the contract\n     * @param state current state of the contract\n     * @param _event event for which the payoff should be evaluated\n     * @param externalData external data needed for POF evaluation\n     * @return the payoff of the event\n     */\n    function payoffFunction(\n        CERTFTerms memory terms,\n        State memory state,\n        bytes32 _event,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns (int256)\n    {\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        if (eventType == EventType.ID) return 0;\n        if (eventType == EventType.CFD) return 0;\n        if (eventType == EventType.RFD) return 0;\n        if (eventType == EventType.XD) return 0;\n        if (eventType == EventType.MD) return 0;\n        if (eventType == EventType.CE) return 0;\n        if (eventType == EventType.IED) return POF_CERTF_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CPD) return POF_CERTF_CPD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RPD) return POF_CERTF_RPD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return POF_CERTF_TD(terms, state, scheduleTime, externalData);\n\n        revert(\"CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\");\n    }\n}\n",
  "sourcePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFEngine.sol",
  "ast": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFEngine.sol",
    "exportedSymbols": {
      "CERTFEngine": [
        31693
      ]
    },
    "id": 31694,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 30296,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:97"
      },
      {
        "id": 30297,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:97"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 30298,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 24036,
        "src": "101:29:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "file": "./ICERTFEngine.sol",
        "id": 30299,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 32424,
        "src": "131:28:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFSTF.sol",
        "file": "./CERTFSTF.sol",
        "id": 30300,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 32323,
        "src": "160:24:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFPOF.sol",
        "file": "./CERTFPOF.sol",
        "id": 30301,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 31814,
        "src": "185:24:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30303,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "464:4:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 30304,
            "nodeType": "InheritanceSpecifier",
            "src": "464:4:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30305,
              "name": "CERTFSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32322,
              "src": "470:8:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFSTF_$32322",
                "typeString": "contract CERTFSTF"
              }
            },
            "id": 30306,
            "nodeType": "InheritanceSpecifier",
            "src": "470:8:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30307,
              "name": "CERTFPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31813,
              "src": "480:8:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFPOF_$31813",
                "typeString": "contract CERTFPOF"
              }
            },
            "id": 30308,
            "nodeType": "InheritanceSpecifier",
            "src": "480:8:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30309,
              "name": "ICERTFEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32423,
              "src": "490:12:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                "typeString": "contract ICERTFEngine"
              }
            },
            "id": 30310,
            "nodeType": "InheritanceSpecifier",
            "src": "490:12:97"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          31813,
          32322,
          32423,
          32432
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 30302,
          "nodeType": "StructuredDocumentation",
          "src": "212:227:97",
          "text": " @title CERTFEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a CERTF contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 31693,
        "linearizedBaseContracts": [
          31693,
          32423,
          32432,
          31813,
          32322,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "CERTFEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 30319,
              "nodeType": "Block",
              "src": "580:42:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 30316,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "597:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 30317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "CERTF",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "597:18:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 30315,
                  "id": 30318,
                  "nodeType": "Return",
                  "src": "590:25:97"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 30320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30312,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "548:8:97"
            },
            "parameters": {
              "id": 30311,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "531:2:97"
            },
            "returnParameters": {
              "id": 30315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30314,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30320,
                  "src": "566:12:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30313,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "566:12:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "565:14:97"
            },
            "scope": 31693,
            "src": "510:112:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32352
            ],
            "body": {
              "id": 30342,
              "nodeType": "Block",
              "src": "1273:141:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30336,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30323,
                        "src": "1327:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30337,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30325,
                        "src": "1346:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30338,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30327,
                        "src": "1365:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30339,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30329,
                        "src": "1385:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 30335,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31575,
                      "src": "1290:23:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 30340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1290:117:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 30334,
                  "id": 30341,
                  "nodeType": "Return",
                  "src": "1283:124:97"
                }
              ]
            },
            "documentation": {
              "id": 30321,
              "nodeType": "StructuredDocumentation",
              "src": "628:403:97",
              "text": " Applys an event to the current state of a contract and returns the resulting contract state.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event to be applied to the contract state\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "functionSelector": "f5235586",
            "id": 30343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30331,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1229:8:97"
            },
            "parameters": {
              "id": 30330,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1075:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30322,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1075:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30325,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1110:20:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30324,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1110:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30327,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1140:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30326,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30329,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1164:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30328,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1164:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1065:125:97"
            },
            "returnParameters": {
              "id": 30334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30333,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1255:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30332,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1255:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1254:14:97"
            },
            "scope": 31693,
            "src": "1036:378:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32366
            ],
            "body": {
              "id": 30393,
              "nodeType": "Block",
              "src": "2030:504:97",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 30370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 30364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30358,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2124:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22870,
                        "src": "2124:24:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2160:1:97",
                            "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": 30361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2152:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 30360,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2152:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 30363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2152:10:97",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2124:38:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 30369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30365,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2166:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22868,
                        "src": "2166:14:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30367,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2184:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22870,
                        "src": "2184:24:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2166:42:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2124:84:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30385,
                  "nodeType": "IfStatement",
                  "src": "2120:282:97",
                  "trueBody": {
                    "id": 30384,
                    "nodeType": "Block",
                    "src": "2210:192:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30380,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30352,
                                  "src": "2377:12:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 30379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2370:6:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 30378,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2370:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 30381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2370:20:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30372,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30346,
                                  "src": "2263:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30373,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30348,
                                  "src": "2286:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30374,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30350,
                                  "src": "2309:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30375,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30352,
                                  "src": "2333:12:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 30371,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31692,
                                "src": "2231:14:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 30376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2231:128:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 30377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2231:138:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 30382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2231:160:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 30357,
                        "id": 30383,
                        "nodeType": "Return",
                        "src": "2224:167:97"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30387,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30346,
                        "src": "2447:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30388,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30348,
                        "src": "2466:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30389,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30350,
                        "src": "2485:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30390,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30352,
                        "src": "2505:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 30386,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31692,
                      "src": "2419:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 30391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2419:108:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 30357,
                  "id": 30392,
                  "nodeType": "Return",
                  "src": "2412:115:97"
                }
              ]
            },
            "documentation": {
              "id": 30344,
              "nodeType": "StructuredDocumentation",
              "src": "1420:373:97",
              "text": " Evaluates the payoff for an event under the current state of the contract.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "functionSelector": "ffcbfc65",
            "id": 30394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30354,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1992:8:97"
            },
            "parameters": {
              "id": 30353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30346,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1838:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30345,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1838:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30348,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1873:20:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30347,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1873:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30350,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1903:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30349,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30352,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1927:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1927:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1828:125:97"
            },
            "returnParameters": {
              "id": 30357,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30356,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "2018:6:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 30355,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2018:6:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2017:8:97"
            },
            "scope": 31693,
            "src": "1798:736:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32338
            ],
            "body": {
              "id": 30459,
              "nodeType": "Block",
              "src": "2861:407:97",
              "statements": [
                {
                  "assignments": [
                    30404
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30404,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30459,
                      "src": "2871:18:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 30403,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2871:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30405,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2871:18:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30406,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2900:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "quantity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22666,
                      "src": "2900:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2917:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2900:18:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30411,
                  "nodeType": "ExpressionStatement",
                  "src": "2900:18:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30412,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2928:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30414,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "exerciseQuantity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22664,
                      "src": "2928:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2953:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2928:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30417,
                  "nodeType": "ExpressionStatement",
                  "src": "2928:26:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30418,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2964:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "marginFactor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22670,
                      "src": "2964:18:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 30421,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "2985:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2964:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30423,
                  "nodeType": "ExpressionStatement",
                  "src": "2964:35:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30424,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3009:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30426,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "adjustmentFactor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22672,
                      "src": "3009:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 30427,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3034:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3009:39:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30429,
                  "nodeType": "ExpressionStatement",
                  "src": "3009:39:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30435,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30430,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3058:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30432,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lastCouponDay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22646,
                      "src": "3058:19:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30433,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30397,
                        "src": "3080:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "issueDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22880,
                      "src": "3080:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3058:37:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 30436,
                  "nodeType": "ExpressionStatement",
                  "src": "3058:37:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30437,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3105:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "couponAmountFixed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22668,
                      "src": "3105:23:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30440,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3131:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3105:27:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30442,
                  "nodeType": "ExpressionStatement",
                  "src": "3105:27:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30443,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3143:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "3143:25:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30446,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "3171:19:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 30447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3171:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "3143:50:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 30449,
                  "nodeType": "ExpressionStatement",
                  "src": "3143:50:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30450,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3203:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30452,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3203:16:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30453,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30397,
                        "src": "3222:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22874,
                      "src": "3222:16:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3203:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 30456,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:35:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30457,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30404,
                    "src": "3256:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 30402,
                  "id": 30458,
                  "nodeType": "Return",
                  "src": "3249:12:97"
                }
              ]
            },
            "documentation": {
              "id": 30395,
              "nodeType": "StructuredDocumentation",
              "src": "2540:178:97",
              "text": " @notice Initialize contract state space based on the contract terms.\n @param terms terms of the contract\n @return the initial state of the contract"
            },
            "functionSelector": "bccf8f31",
            "id": 30460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30399,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2817:8:97"
            },
            "parameters": {
              "id": 30398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30397,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30460,
                  "src": "2752:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30396,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "2752:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2751:27:97"
            },
            "returnParameters": {
              "id": 30402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30401,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30460,
                  "src": "2843:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30400,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2843:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2842:14:97"
            },
            "scope": 31693,
            "src": "2723:545:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32379
            ],
            "body": {
              "id": 30603,
              "nodeType": "Block",
              "src": "3859:1146:97",
              "statements": [
                {
                  "assignments": [
                    30479
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30479,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "3869:46:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30477,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3869:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30478,
                        "length": {
                          "argumentTypes": null,
                          "id": 30476,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "3877:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3869:32:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30480,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3869:46:97"
                },
                {
                  "assignments": [
                    30482
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30482,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "3925:12:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 30481,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "3925:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30483,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3925:12:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30484,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "3974:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "issueDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22880,
                      "src": "3974:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3993:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3974:20:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30511,
                  "nodeType": "IfStatement",
                  "src": "3970:226:97",
                  "trueBody": {
                    "id": 30510,
                    "nodeType": "Block",
                    "src": "3996:200:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30489,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30463,
                                "src": "4026:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                  "typeString": "struct CERTFTerms calldata"
                                }
                              },
                              "id": 30490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "issueDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22880,
                              "src": "4026:15:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30491,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30465,
                              "src": "4043:12:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30492,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30467,
                              "src": "4057:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30488,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4014:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 30493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4014:54:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30509,
                        "nodeType": "IfStatement",
                        "src": "4010:176:97",
                        "trueBody": {
                          "id": 30508,
                          "nodeType": "Block",
                          "src": "4070:116:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30494,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4088:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30496,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30495,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4095:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4088:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30498,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4116:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30499,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "ID",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4116:12:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30500,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4130:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30501,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "issueDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22880,
                                      "src": "4130:15:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30497,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4104:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4104:42:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4088:58:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30504,
                              "nodeType": "ExpressionStatement",
                              "src": "4088:58:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4164:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30505,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4164:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30507,
                              "nodeType": "ExpressionStatement",
                              "src": "4164:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30512,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "4238:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialExchangeDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22876,
                      "src": "4238:25:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4267:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4238:30:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30539,
                  "nodeType": "IfStatement",
                  "src": "4234:257:97",
                  "trueBody": {
                    "id": 30538,
                    "nodeType": "Block",
                    "src": "4270:221:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30517,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30463,
                                "src": "4300:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                  "typeString": "struct CERTFTerms calldata"
                                }
                              },
                              "id": 30518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "initialExchangeDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22876,
                              "src": "4300:25:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30519,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30465,
                              "src": "4327:12:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30520,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30467,
                              "src": "4341:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30516,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4288:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 30521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4288:64:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30537,
                        "nodeType": "IfStatement",
                        "src": "4284:197:97",
                        "trueBody": {
                          "id": 30536,
                          "nodeType": "Block",
                          "src": "4354:127:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30522,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4372:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30524,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30523,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4379:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4372:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30526,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4400:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30527,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "IED",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4400:13:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30528,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4415:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30529,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "initialExchangeDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22876,
                                      "src": "4415:25:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30525,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4388:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4388:53:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4372:69:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30532,
                              "nodeType": "ExpressionStatement",
                              "src": "4372:69:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4459:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30533,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4459:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30535,
                              "nodeType": "ExpressionStatement",
                              "src": "4459:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30540,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "4531:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22878,
                      "src": "4531:18:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4553:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4531:23:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30569,
                  "nodeType": "IfStatement",
                  "src": "4527:243:97",
                  "trueBody": {
                    "id": 30568,
                    "nodeType": "Block",
                    "src": "4556:214:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 30551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30545,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30463,
                                  "src": "4586:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  }
                                },
                                "id": 30546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22878,
                                "src": "4586:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 30547,
                                "name": "segmentStart",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30465,
                                "src": "4606:12:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 30548,
                                "name": "segmentEnd",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30467,
                                "src": "4620:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 30544,
                              "name": "isInSegment",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24667,
                              "src": "4574:11:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 30549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4574:57:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 30550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4635:4:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4574:65:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30567,
                        "nodeType": "IfStatement",
                        "src": "4570:190:97",
                        "trueBody": {
                          "id": 30566,
                          "nodeType": "Block",
                          "src": "4641:119:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30552,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4659:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30554,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30553,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4666:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4659:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30556,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4687:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "MD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4687:12:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30558,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4701:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "4701:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30555,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4675:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4675:45:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4659:61:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30562,
                              "nodeType": "ExpressionStatement",
                              "src": "4659:61:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4738:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30563,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4738:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30565,
                              "nodeType": "ExpressionStatement",
                              "src": "4738:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    30574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30574,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "4831:25:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30572,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4831:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30573,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4831:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30578,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30482,
                        "src": "4873:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 30577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4859:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30575,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4863:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30576,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4863:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 30579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4859:20:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4831:48:97"
                },
                {
                  "body": {
                    "id": 30599,
                    "nodeType": "Block",
                    "src": "4925:48:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 30591,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30574,
                              "src": "4939:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 30593,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 30592,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30582,
                              "src": "4948:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4939:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 30594,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30479,
                              "src": "4953:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 30596,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 30595,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30582,
                              "src": "4960:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4953:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4939:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30598,
                        "nodeType": "ExpressionStatement",
                        "src": "4939:23:97"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30585,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30582,
                      "src": "4909:1:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 30586,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30482,
                      "src": "4913:5:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4909:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 30600,
                  "initializationExpression": {
                    "assignments": [
                      30582
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 30582,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30600,
                        "src": "4894:9:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4894:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 30584,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30583,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4906:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4894:13:97"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 30589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4920:3:97",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 30588,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30582,
                        "src": "4920:1:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 30590,
                    "nodeType": "ExpressionStatement",
                    "src": "4920:3:97"
                  },
                  "nodeType": "ForStatement",
                  "src": "4889:84:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30601,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30574,
                    "src": "4990:8:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 30473,
                  "id": 30602,
                  "nodeType": "Return",
                  "src": "4983:15:97"
                }
              ]
            },
            "documentation": {
              "id": 30461,
              "nodeType": "StructuredDocumentation",
              "src": "3274:354:97",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @return segment of the non-cyclic schedule"
            },
            "functionSelector": "6021c23b",
            "id": 30604,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30469,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3811:8:97"
            },
            "parameters": {
              "id": 30468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30463,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3683:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30462,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "3683:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30465,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3718:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30464,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3718:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30467,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3748:18:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3748:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3673:99:97"
            },
            "returnParameters": {
              "id": 30473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30472,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3837:16:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30470,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3837:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 30471,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3837:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:18:97"
            },
            "scope": 31693,
            "src": "3633:1372:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32394
            ],
            "body": {
              "id": 31144,
              "nodeType": "Block",
              "src": "5662:5549:97",
              "statements": [
                {
                  "assignments": [
                    30625
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30625,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "5672:46:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30623,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5672:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30624,
                        "length": {
                          "argumentTypes": null,
                          "id": 30622,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "5680:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5672:32:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30626,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5672:46:97"
                },
                {
                  "assignments": [
                    30628
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30628,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "5728:13:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 30627,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5728:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30629,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5728:13:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30630,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "5756:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30631,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "5769:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5769:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "5756:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30720,
                  "nodeType": "IfStatement",
                  "src": "5752:917:97",
                  "trueBody": {
                    "id": 30719,
                    "nodeType": "Block",
                    "src": "5784:885:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30634,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "5802:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "5802:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5835:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5802:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30718,
                        "nodeType": "IfStatement",
                        "src": "5798:861:97",
                        "trueBody": {
                          "id": 30717,
                          "nodeType": "Block",
                          "src": "5838:821:97",
                          "statements": [
                            {
                              "assignments": [
                                30643
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30643,
                                  "mutability": "mutable",
                                  "name": "couponSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30717,
                                  "src": "5856:45:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30641,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5856:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30642,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30640,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "5864:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "5856:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30671,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30645,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "5954:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "5954:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30650,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30647,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6006:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30648,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6006:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30649,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6027:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6006:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30651,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6005:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30654,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "6053:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6005:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30652,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "6032:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30653,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "6032:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30656,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6085:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "6085:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30658,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6126:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "6126:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30663,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30660,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6175:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6175:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6196:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6175:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30664,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6174:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6208:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6174:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6201:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30668,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "6235:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30669,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "6269:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30644,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "5904:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5904:393:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5856:441:97"
                            },
                            {
                              "body": {
                                "id": 30715,
                                "nodeType": "Block",
                                "src": "6358:287:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30686,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30682,
                                          "name": "couponSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30643,
                                          "src": "6384:14:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30684,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30683,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30673,
                                          "src": "6399:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6384:17:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30685,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6405:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6384:22:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30688,
                                    "nodeType": "IfStatement",
                                    "src": "6380:33:97",
                                    "trueBody": {
                                      "id": 30687,
                                      "nodeType": "Break",
                                      "src": "6408:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30690,
                                              "name": "couponSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30643,
                                              "src": "6451:14:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30692,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30691,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30673,
                                              "src": "6466:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6451:17:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30693,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "6470:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30694,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "6484:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30689,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6439:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6439:56:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6499:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6439:65:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30699,
                                    "nodeType": "IfStatement",
                                    "src": "6435:79:97",
                                    "trueBody": {
                                      "id": 30698,
                                      "nodeType": "Continue",
                                      "src": "6506:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30700,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "6536:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30702,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30701,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "6543:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6536:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30704,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "6564:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30705,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "CFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6564:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30706,
                                              "name": "couponSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30643,
                                              "src": "6579:14:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30708,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30707,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30673,
                                              "src": "6594:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6579:17:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30703,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "6552:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6552:45:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "6536:61:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30711,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6536:61:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "6619:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30712,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "6619:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30714,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6619:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30676,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30673,
                                  "src": "6333:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30677,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6337:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6333:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30716,
                              "initializationExpression": {
                                "assignments": [
                                  30673
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30673,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30716,
                                    "src": "6320:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30672,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6320:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30675,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6330:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6320:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6353:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30679,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30673,
                                    "src": "6353:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30681,
                                "nodeType": "ExpressionStatement",
                                "src": "6353:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "6315:330:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30721,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "6684:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30722,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6697:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6697:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6684:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30817,
                  "nodeType": "IfStatement",
                  "src": "6680:1065:97",
                  "trueBody": {
                    "id": 30816,
                    "nodeType": "Block",
                    "src": "6712:1033:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30725,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "6730:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "6730:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6763:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6730:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30815,
                        "nodeType": "IfStatement",
                        "src": "6726:1009:97",
                        "trueBody": {
                          "id": 30814,
                          "nodeType": "Block",
                          "src": "6766:969:97",
                          "statements": [
                            {
                              "assignments": [
                                30734
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30734,
                                  "mutability": "mutable",
                                  "name": "couponSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30814,
                                  "src": "6784:45:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30732,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6784:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30733,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30731,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "6792:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "6784:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30762,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30736,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6882:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "6882:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30741,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30738,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6934:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30739,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6934:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30740,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6955:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6934:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30742,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6933:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30745,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "6981:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6933:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30743,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "6960:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30744,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "6960:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30747,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7013:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "7013:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30749,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7054:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "7054:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30754,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30751,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "7103:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30752,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "7103:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30753,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7124:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7103:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30755,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "7102:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7136:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "7102:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7129:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30759,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "7163:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30760,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "7197:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30735,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6832:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6832:393:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6784:441:97"
                            },
                            {
                              "body": {
                                "id": 30812,
                                "nodeType": "Block",
                                "src": "7286:435:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30773,
                                          "name": "couponSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30734,
                                          "src": "7312:14:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30775,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30774,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30764,
                                          "src": "7327:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7312:17:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30776,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7333:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "7312:22:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30779,
                                    "nodeType": "IfStatement",
                                    "src": "7308:33:97",
                                    "trueBody": {
                                      "id": 30778,
                                      "nodeType": "Break",
                                      "src": "7336:5:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      30781
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 30781,
                                        "mutability": "mutable",
                                        "name": "couponPaymentDayScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 30812,
                                        "src": "7363:36:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 30780,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7363:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 30789,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 30783,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "7425:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 30784,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "settlementPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22902,
                                          "src": "7425:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 30785,
                                            "name": "couponSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30734,
                                            "src": "7449:14:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 30787,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 30786,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30764,
                                            "src": "7464:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7449:17:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 30782,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "7402:22:97",
                                        "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": 30788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7402:65:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7363:104:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30796,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 30791,
                                            "name": "couponPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30781,
                                            "src": "7505:28:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30792,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "7535:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30793,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "7549:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30790,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "7493:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7493:67:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30795,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7564:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "7493:76:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30798,
                                    "nodeType": "IfStatement",
                                    "src": "7489:90:97",
                                    "trueBody": {
                                      "id": 30797,
                                      "nodeType": "Continue",
                                      "src": "7571:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30807,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30799,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "7601:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30801,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30800,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "7608:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7601:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30803,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7629:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30804,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "CFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7629:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30805,
                                            "name": "couponPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30781,
                                            "src": "7644:28:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30802,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7617:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7617:56:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7601:72:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30808,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7601:72:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7695:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30809,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "7695:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30811,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7695:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30767,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30764,
                                  "src": "7261:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30768,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "7265:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7261:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30813,
                              "initializationExpression": {
                                "assignments": [
                                  30764
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30764,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30813,
                                    "src": "7248:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30763,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7248:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30766,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7258:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7248:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "7281:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30770,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30764,
                                    "src": "7281:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30772,
                                "nodeType": "ExpressionStatement",
                                "src": "7281:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "7243:478:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30818,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "7759:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30819,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "7772:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30820,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7772:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "7759:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30908,
                  "nodeType": "IfStatement",
                  "src": "7755:945:97",
                  "trueBody": {
                    "id": 30907,
                    "nodeType": "Block",
                    "src": "7787:913:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30822,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "7805:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "7805:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7842:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7805:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30906,
                        "nodeType": "IfStatement",
                        "src": "7801:889:97",
                        "trueBody": {
                          "id": 30905,
                          "nodeType": "Block",
                          "src": "7845:845:97",
                          "statements": [
                            {
                              "assignments": [
                                30831
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30831,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30905,
                                  "src": "7863:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30829,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7863:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30830,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30828,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7871:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7863:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30859,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30833,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7965:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "7965:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30838,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30835,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8021:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30836,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8021:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30837,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8042:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8021:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30839,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8020:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30842,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "8068:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30843,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8020:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30840,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "8047:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30841,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "8047:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30844,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8100:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "8100:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30846,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8145:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30847,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "8145:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30851,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30848,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8194:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30849,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8194:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30850,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8215:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8194:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30852,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8193:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30854,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8227:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30855,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8193:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30853,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8220:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30856,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "8254:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30857,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "8288:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30832,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7915:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7915:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7863:453:97"
                            },
                            {
                              "body": {
                                "id": 30903,
                                "nodeType": "Block",
                                "src": "8377:299:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30874,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30870,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30831,
                                          "src": "8403:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30872,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30871,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30861,
                                          "src": "8422:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8403:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30873,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8428:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8403:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30876,
                                    "nodeType": "IfStatement",
                                    "src": "8399:37:97",
                                    "trueBody": {
                                      "id": 30875,
                                      "nodeType": "Break",
                                      "src": "8431:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30885,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30878,
                                              "name": "redemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30831,
                                              "src": "8474:18:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30880,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30879,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30861,
                                              "src": "8493:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8474:21:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30881,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "8497:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30882,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "8511:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30877,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8462:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30883,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8462:60:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30884,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8526:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8462:69:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30887,
                                    "nodeType": "IfStatement",
                                    "src": "8458:83:97",
                                    "trueBody": {
                                      "id": 30886,
                                      "nodeType": "Continue",
                                      "src": "8533:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30888,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "8563:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30890,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30889,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "8570:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8563:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30892,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8591:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30893,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8591:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30894,
                                              "name": "redemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30831,
                                              "src": "8606:18:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30896,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30895,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30861,
                                              "src": "8625:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8606:21:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30891,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8579:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8579:49:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8563:65:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30899,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8563:65:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8650:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30900,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "8650:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30902,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8650:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30864,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30861,
                                  "src": "8352:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30865,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8356:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8352:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30904,
                              "initializationExpression": {
                                "assignments": [
                                  30861
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30861,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30904,
                                    "src": "8339:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30860,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8339:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30863,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8349:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8339:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8372:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30867,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30861,
                                    "src": "8372:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30869,
                                "nodeType": "ExpressionStatement",
                                "src": "8372:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "8334:342:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30909,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "8714:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30910,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8727:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8727:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8714:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31005,
                  "nodeType": "IfStatement",
                  "src": "8710:1101:97",
                  "trueBody": {
                    "id": 31004,
                    "nodeType": "Block",
                    "src": "8742:1069:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30913,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "8760:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "8760:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8797:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8760:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31003,
                        "nodeType": "IfStatement",
                        "src": "8756:1045:97",
                        "trueBody": {
                          "id": 31002,
                          "nodeType": "Block",
                          "src": "8800:1001:97",
                          "statements": [
                            {
                              "assignments": [
                                30922
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30922,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31002,
                                  "src": "8818:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30920,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8818:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30921,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30919,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8826:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8818:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30950,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30924,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8920:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30925,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "8920:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30929,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30926,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8976:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30927,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8976:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30928,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8997:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8976:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30930,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8975:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30933,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "9023:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8975:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30931,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "9002:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30932,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "9002:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30935,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "9055:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "9055:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30937,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "9100:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "9100:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30942,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30939,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "9149:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30940,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "9149:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30941,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9170:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9149:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30943,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9148:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30945,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9182:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "9148:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9175:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30947,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "9209:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30948,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "9243:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30923,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8870:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8870:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8818:453:97"
                            },
                            {
                              "body": {
                                "id": 31000,
                                "nodeType": "Block",
                                "src": "9332:455:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30961,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30922,
                                          "src": "9358:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30963,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30962,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30952,
                                          "src": "9377:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9358:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9383:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9358:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30967,
                                    "nodeType": "IfStatement",
                                    "src": "9354:37:97",
                                    "trueBody": {
                                      "id": 30966,
                                      "nodeType": "Break",
                                      "src": "9386:5:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      30969
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 30969,
                                        "mutability": "mutable",
                                        "name": "redemptionPaymentDayScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 31000,
                                        "src": "9413:40:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 30968,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9413:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 30977,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 30971,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "9479:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 30972,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "settlementPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22902,
                                          "src": "9479:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 30973,
                                            "name": "redemptionSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30922,
                                            "src": "9503:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 30975,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 30974,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30952,
                                            "src": "9522:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9503:21:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 30970,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "9456:22:97",
                                        "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": 30976,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9456:69:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9413:112:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 30979,
                                            "name": "redemptionPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30969,
                                            "src": "9563:32:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30980,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "9597:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30981,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "9611:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30978,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9551:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30982,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9551:71:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9626:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9551:80:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30986,
                                    "nodeType": "IfStatement",
                                    "src": "9547:94:97",
                                    "trueBody": {
                                      "id": 30985,
                                      "nodeType": "Continue",
                                      "src": "9633:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30995,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30987,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "9663:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30989,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30988,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "9670:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9663:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30991,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9691:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30992,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RPD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9691:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30993,
                                            "name": "redemptionPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30969,
                                            "src": "9706:32:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30990,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9679:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9679:60:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9663:76:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30996,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9663:76:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9761:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30997,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "9761:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30999,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9761:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30955,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30952,
                                  "src": "9307:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30956,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9311:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9307:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31001,
                              "initializationExpression": {
                                "assignments": [
                                  30952
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30952,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 31001,
                                    "src": "9294:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30951,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9294:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30954,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9304:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9294:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9327:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30958,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30952,
                                    "src": "9327:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30960,
                                "nodeType": "ExpressionStatement",
                                "src": "9327:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "9289:498:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31006,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "9825:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31007,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9838:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9838:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9825:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31110,
                  "nodeType": "IfStatement",
                  "src": "9821:1155:97",
                  "trueBody": {
                    "id": 31109,
                    "nodeType": "Block",
                    "src": "9852:1124:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31010,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "9870:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "9870:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9907:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9870:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31108,
                        "nodeType": "IfStatement",
                        "src": "9866:1100:97",
                        "trueBody": {
                          "id": 31107,
                          "nodeType": "Block",
                          "src": "9910:1056:97",
                          "statements": [
                            {
                              "assignments": [
                                31019
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31019,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31107,
                                  "src": "9928:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 31017,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9928:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31018,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 31016,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9936:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9928:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31047,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31021,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10030:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "10030:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 31026,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31023,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "10086:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 31024,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "10086:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 31025,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10107:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10086:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 31027,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10085:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 31030,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "10133:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10085:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 31028,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "10112:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 31029,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "10112:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31032,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10165:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "10165:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31034,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10210:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "10210:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 31039,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31036,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "10259:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 31037,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "10259:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 31038,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10280:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10259:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 31040,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10258:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 31042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10292:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 31043,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10258:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 31041,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10285:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31044,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "10319:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31045,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "10353:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31020,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9980:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 31046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9980:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9928:453:97"
                            },
                            {
                              "body": {
                                "id": 31105,
                                "nodeType": "Block",
                                "src": "10442:510:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31058,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31019,
                                          "src": "10468:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 31060,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31059,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31049,
                                          "src": "10487:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10468:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 31061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10493:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10468:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31064,
                                    "nodeType": "IfStatement",
                                    "src": "10464:37:97",
                                    "trueBody": {
                                      "id": 31063,
                                      "nodeType": "Break",
                                      "src": "10496:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31070,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31065,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31019,
                                          "src": "10527:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 31067,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31066,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31049,
                                          "src": "10546:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10527:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 31068,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30607,
                                          "src": "10552:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                            "typeString": "struct CERTFTerms calldata"
                                          }
                                        },
                                        "id": 31069,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "maturityDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22878,
                                        "src": "10552:18:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10527:43:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31072,
                                    "nodeType": "IfStatement",
                                    "src": "10523:57:97",
                                    "trueBody": {
                                      "id": 31071,
                                      "nodeType": "Continue",
                                      "src": "10572:8:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      31074
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 31074,
                                        "mutability": "mutable",
                                        "name": "executionDateScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 31105,
                                        "src": "10602:33:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 31073,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10602:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 31082,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 31076,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "10661:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 31077,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "exercisePeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22906,
                                          "src": "10661:20:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 31078,
                                            "name": "redemptionSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31019,
                                            "src": "10683:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 31080,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 31079,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31049,
                                            "src": "10702:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "10683:21:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 31075,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "10638:22:97",
                                        "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": 31081,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10638:67:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10602:103:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 31089,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 31084,
                                            "name": "executionDateScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31074,
                                            "src": "10743:25:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31085,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "10770:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31086,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "10784:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 31083,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10731:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 31087,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10731:64:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 31088,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10799:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10731:73:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31091,
                                    "nodeType": "IfStatement",
                                    "src": "10727:87:97",
                                    "trueBody": {
                                      "id": 31090,
                                      "nodeType": "Continue",
                                      "src": "10806:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31100,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31092,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "10836:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 31094,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31093,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "10843:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10836:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31096,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10864:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 31097,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "XD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10864:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31098,
                                            "name": "executionDateScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31074,
                                            "src": "10878:25:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 31095,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10852:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 31099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10852:52:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10836:68:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 31101,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10836:68:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10926:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 31102,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "10926:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31104,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10926:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31052,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31049,
                                  "src": "10417:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 31053,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "10421:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10417:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31106,
                              "initializationExpression": {
                                "assignments": [
                                  31049
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 31049,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 31106,
                                    "src": "10404:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 31048,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10404:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 31051,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 31050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10414:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "10404:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "10437:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 31055,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31049,
                                    "src": "10437:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 31057,
                                "nodeType": "ExpressionStatement",
                                "src": "10437:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "10399:553:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    31115
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31115,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "11037:25:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31113,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11037:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31114,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11037:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31121,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31119,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30628,
                        "src": "11079:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 31118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11065:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31116,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11069:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31117,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11069:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 31120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11065:20:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11037:48:97"
                },
                {
                  "body": {
                    "id": 31140,
                    "nodeType": "Block",
                    "src": "11131:48:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31132,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31115,
                              "src": "11145:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 31134,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31133,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31123,
                              "src": "11154:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11145:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31135,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30625,
                              "src": "11159:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 31137,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31136,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31123,
                              "src": "11166:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11159:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11145:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31139,
                        "nodeType": "ExpressionStatement",
                        "src": "11145:23:97"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 31128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31126,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31123,
                      "src": "11115:1:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 31127,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30628,
                      "src": "11119:5:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11115:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 31141,
                  "initializationExpression": {
                    "assignments": [
                      31123
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 31123,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31141,
                        "src": "11100:9:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11100:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 31125,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31124,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11112:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11100:13:97"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 31130,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11126:3:97",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 31129,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31123,
                        "src": "11126:1:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 31131,
                    "nodeType": "ExpressionStatement",
                    "src": "11126:3:97"
                  },
                  "nodeType": "ForStatement",
                  "src": "11095:84:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 31142,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 31115,
                    "src": "11196:8:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 30619,
                  "id": 31143,
                  "nodeType": "Return",
                  "src": "11189:15:97"
                }
              ]
            },
            "documentation": {
              "id": 30605,
              "nodeType": "StructuredDocumentation",
              "src": "5011:395:97",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "d115612f",
            "id": 31145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30615,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5615:8:97"
            },
            "parameters": {
              "id": 30614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30607,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5458:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30606,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "5458:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30609,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5493:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5493:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30611,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5523:18:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30610,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5523:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30613,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5551:19:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30612,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5551:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5448:128:97"
            },
            "returnParameters": {
              "id": 30619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30618,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5640:16:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30616,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5640:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 30617,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5640:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5639:18:97"
            },
            "scope": 31693,
            "src": "5411:5800:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32406
            ],
            "body": {
              "id": 31407,
              "nodeType": "Block",
              "src": "11779:3249:97",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31158,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "11793:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31159,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11806:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11806:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11793:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31199,
                  "nodeType": "IfStatement",
                  "src": "11789:523:97",
                  "trueBody": {
                    "id": 31198,
                    "nodeType": "Block",
                    "src": "11821:491:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31162,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "11839:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "11839:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11872:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11839:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31197,
                        "nodeType": "IfStatement",
                        "src": "11835:467:97",
                        "trueBody": {
                          "id": 31196,
                          "nodeType": "Block",
                          "src": "11875:427:97",
                          "statements": [
                            {
                              "assignments": [
                                31167
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31167,
                                  "mutability": "mutable",
                                  "name": "nextCouponDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31196,
                                  "src": "11893:22:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31166,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11893:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31177,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31169,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "11977:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "11977:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31171,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12018:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "12018:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31173,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12066:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "12066:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31175,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "12117:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31168,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11918:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11918:233:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11893:258:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31178,
                                  "name": "nextCouponDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31167,
                                  "src": "12173:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31181,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12199:1:97",
                                      "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": 31180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12191:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31179,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12191:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12191:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12173:28:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31189,
                              "nodeType": "IfStatement",
                              "src": "12169:51:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12218:1:97",
                                      "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": 31185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12210:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31184,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12210:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12210:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31188,
                                "nodeType": "Return",
                                "src": "12203:17:97"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31191,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12257:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "CFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12257:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31193,
                                    "name": "nextCouponDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31167,
                                    "src": "12272:14:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31190,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12245:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12245:42:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31195,
                              "nodeType": "Return",
                              "src": "12238:49:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31200,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "12327:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31201,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12340:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12340:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12327:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31249,
                  "nodeType": "IfStatement",
                  "src": "12323:656:97",
                  "trueBody": {
                    "id": 31248,
                    "nodeType": "Block",
                    "src": "12355:624:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31204,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "12373:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "12373:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12406:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12373:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31247,
                        "nodeType": "IfStatement",
                        "src": "12369:600:97",
                        "trueBody": {
                          "id": 31246,
                          "nodeType": "Block",
                          "src": "12409:560:97",
                          "statements": [
                            {
                              "assignments": [
                                31209
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31209,
                                  "mutability": "mutable",
                                  "name": "nextCouponDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31246,
                                  "src": "12427:22:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31208,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12427:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31219,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31211,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12511:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "12511:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31213,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12552:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "12552:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31215,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12600:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "12600:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31217,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "12651:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31210,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12452:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12452:233:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12427:258:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31220,
                                  "name": "nextCouponDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31209,
                                  "src": "12707:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12733:1:97",
                                      "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": 31222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12725:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31221,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12725:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12725:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12707:28:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31231,
                              "nodeType": "IfStatement",
                              "src": "12703:51:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31228,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12752:1:97",
                                      "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": 31227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12744:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31226,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12744:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12744:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31230,
                                "nodeType": "Return",
                                "src": "12737:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31233
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31233,
                                  "mutability": "mutable",
                                  "name": "couponPaymentDayScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31246,
                                  "src": "12772:36:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31232,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12772:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31239,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31235,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12834:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "settlementPeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22902,
                                    "src": "12834:22:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31237,
                                    "name": "nextCouponDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31209,
                                    "src": "12858:14:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31234,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "12811:22:97",
                                  "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": 31238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12811:62:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12772:101:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31241,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12910:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "CFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12910:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31243,
                                    "name": "couponPaymentDayScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31233,
                                    "src": "12925:28:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31240,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12898:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12898:56:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31245,
                              "nodeType": "Return",
                              "src": "12891:63:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31250,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "12993:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31251,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13006:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13006:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12993:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31291,
                  "nodeType": "IfStatement",
                  "src": "12989:547:97",
                  "trueBody": {
                    "id": 31290,
                    "nodeType": "Block",
                    "src": "13021:515:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31254,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "13039:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "13039:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13076:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13039:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31289,
                        "nodeType": "IfStatement",
                        "src": "13035:491:97",
                        "trueBody": {
                          "id": 31288,
                          "nodeType": "Block",
                          "src": "13079:447:97",
                          "statements": [
                            {
                              "assignments": [
                                31259
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31259,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31288,
                                  "src": "13097:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31258,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13097:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31269,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31261,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13185:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "13185:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31263,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13230:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "13230:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31265,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13278:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "13278:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31267,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "13333:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31260,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13126:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13126:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13097:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31270,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31259,
                                  "src": "13389:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13419:1:97",
                                      "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": 31272,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13411:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31271,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13411:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13411:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13389:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31281,
                              "nodeType": "IfStatement",
                              "src": "13385:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13438:1:97",
                                      "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": 31277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13430:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31276,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13430:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13430:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31280,
                                "nodeType": "Return",
                                "src": "13423:17:97"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31283,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13477:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13477:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31285,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31259,
                                    "src": "13492:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31282,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13465:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13465:46:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31287,
                              "nodeType": "Return",
                              "src": "13458:53:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31292,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "13550:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31293,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13563:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13563:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13550:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31341,
                  "nodeType": "IfStatement",
                  "src": "13546:688:97",
                  "trueBody": {
                    "id": 31340,
                    "nodeType": "Block",
                    "src": "13578:656:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31296,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "13596:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "13596:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13633:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13596:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31339,
                        "nodeType": "IfStatement",
                        "src": "13592:632:97",
                        "trueBody": {
                          "id": 31338,
                          "nodeType": "Block",
                          "src": "13636:588:97",
                          "statements": [
                            {
                              "assignments": [
                                31301
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31301,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31338,
                                  "src": "13654:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31300,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13654:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31311,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31303,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13742:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "13742:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31305,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13787:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "13787:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31307,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13835:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "13835:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31309,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "13890:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31302,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13683:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13683:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13654:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31312,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31301,
                                  "src": "13946:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31315,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13976:1:97",
                                      "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": 31314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13968:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31313,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13968:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13968:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13946:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31323,
                              "nodeType": "IfStatement",
                              "src": "13942:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13995:1:97",
                                      "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": 31319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13987:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31318,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13987:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13987:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31322,
                                "nodeType": "Return",
                                "src": "13980:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31325
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31325,
                                  "mutability": "mutable",
                                  "name": "redemptionPaymentDayScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31338,
                                  "src": "14015:40:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31324,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14015:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31331,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31327,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14081:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "settlementPeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22902,
                                    "src": "14081:22:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31329,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31301,
                                    "src": "14105:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31326,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "14058:22:97",
                                  "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": 31330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14058:66:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14015:109:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31333,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14161:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31334,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RPD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14161:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31335,
                                    "name": "redemptionPaymentDayScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31325,
                                    "src": "14176:32:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31332,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14149:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14149:60:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31337,
                              "nodeType": "Return",
                              "src": "14142:67:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31342,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "14248:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31343,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "14261:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31344,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14261:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "14248:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31401,
                  "nodeType": "IfStatement",
                  "src": "14244:751:97",
                  "trueBody": {
                    "id": 31400,
                    "nodeType": "Block",
                    "src": "14275:720:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31346,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "14293:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "14293:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14330:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14293:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31399,
                        "nodeType": "IfStatement",
                        "src": "14289:696:97",
                        "trueBody": {
                          "id": 31398,
                          "nodeType": "Block",
                          "src": "14333:652:97",
                          "statements": [
                            {
                              "assignments": [
                                31351
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31351,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31398,
                                  "src": "14351:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31350,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14351:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31361,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31353,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14439:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "14439:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31355,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14484:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "14484:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31357,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14532:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31358,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "14532:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31359,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "14587:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31352,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "14380:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14380:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14351:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31362,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31351,
                                  "src": "14643:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14673:1:97",
                                      "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": 31364,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14665:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31363,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14665:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14665:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14643:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31373,
                              "nodeType": "IfStatement",
                              "src": "14639:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14692:1:97",
                                      "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": 31369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14684:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31368,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14684:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14684:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31372,
                                "nodeType": "Return",
                                "src": "14677:17:97"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31374,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31351,
                                  "src": "14716:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31375,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31148,
                                    "src": "14738:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                      "typeString": "struct CERTFTerms calldata"
                                    }
                                  },
                                  "id": 31376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22878,
                                  "src": "14738:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14716:40:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31383,
                              "nodeType": "IfStatement",
                              "src": "14712:63:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14773:1:97",
                                      "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": 31379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14765:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31378,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14765:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14765:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31382,
                                "nodeType": "Return",
                                "src": "14758:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31385
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31385,
                                  "mutability": "mutable",
                                  "name": "executionDateScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31398,
                                  "src": "14793:33:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31384,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14793:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31391,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31387,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14852:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "exercisePeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22906,
                                    "src": "14852:20:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31389,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31351,
                                    "src": "14874:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31386,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "14829:22:97",
                                  "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": 31390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14829:64:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14793:100:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31393,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14930:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "XD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14930:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31395,
                                    "name": "executionDateScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31385,
                                    "src": "14944:25:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31392,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14918:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14918:52:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31397,
                              "nodeType": "Return",
                              "src": "14911:59:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 31404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15019:1:97",
                        "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": 31403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "15011:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 31402,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15011:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 31405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15011:10:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 31157,
                  "id": 31406,
                  "nodeType": "Return",
                  "src": "15004:17:97"
                }
              ]
            },
            "documentation": {
              "id": 31146,
              "nodeType": "StructuredDocumentation",
              "src": "11217:345:97",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param lastScheduleTime last occurrence of cyclic event\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "34a64ea2",
            "id": 31408,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 31154,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11741:8:97"
            },
            "parameters": {
              "id": 31153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31148,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11608:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31147,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "11608:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31150,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11643:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11643:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31152,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11677:19:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31151,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11677:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11598:104:97"
            },
            "returnParameters": {
              "id": 31157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31156,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11766:7:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11766:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11765:9:97"
            },
            "scope": 31693,
            "src": "11567:3461:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32422
            ],
            "body": {
              "id": 31427,
              "nodeType": "Block",
              "src": "15918:28:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 31425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15935:4:97",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 31424,
                  "id": 31426,
                  "nodeType": "Return",
                  "src": "15928:11:97"
                }
              ]
            },
            "documentation": {
              "id": 31409,
              "nodeType": "StructuredDocumentation",
              "src": "15034:586:97",
              "text": " @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n contract and the current state of the underlying.\n param _event event for which to check if its still scheduled\n param terms terms of the contract\n param state current state of the contract\n param hasUnderlying boolean indicating whether the contract has an underlying contract\n param underlyingState state of the underlying (empty state object if non-existing)\n @return boolean indicating whether event is still scheduled"
            },
            "functionSelector": "ebbf5526",
            "id": 31428,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 31421,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15882:8:97"
            },
            "parameters": {
              "id": 31420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31411,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15660:7:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31410,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15660:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31413,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15690:19:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31412,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "15690:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31415,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15731:14:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31414,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15731:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31417,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15767:4:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31416,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15767:4:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31419,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15801:14:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31418,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15801:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15650:193:97"
            },
            "returnParameters": {
              "id": 31424,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31423,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15908:4:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31422,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15908:4:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15907:6:97"
            },
            "scope": 31693,
            "src": "15625:321:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 31574,
              "nodeType": "Block",
              "src": "16825:1190:97",
              "statements": [
                {
                  "assignments": [
                    31443,
                    31445
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31443,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31574,
                      "src": "16836:19:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 31442,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "16836:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 31445,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31574,
                      "src": "16857:20:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31444,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16857:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31449,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31447,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31435,
                        "src": "16893:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 31446,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "16881:11:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 31448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16881:19:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16835:65:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31450,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "16915:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31451,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16928:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ID",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16928:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16915:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31461,
                  "nodeType": "IfStatement",
                  "src": "16911:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31455,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "16962:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31456,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "16969:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31457,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "16976:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31458,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "16990:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31454,
                        "name": "STF_CERTF_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31850,
                        "src": "16949:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16949:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31460,
                    "nodeType": "Return",
                    "src": "16942:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31462,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17017:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31463,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17030:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17030:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17017:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31473,
                  "nodeType": "IfStatement",
                  "src": "17013:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31467,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17066:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31468,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17073:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31469,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17080:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31470,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17094:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31466,
                        "name": "STF_CERTF_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31873,
                        "src": "17052:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17052:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31472,
                    "nodeType": "Return",
                    "src": "17045:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31474,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17121:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31475,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17134:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31476,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17134:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17121:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31485,
                  "nodeType": "IfStatement",
                  "src": "17117:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31479,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17170:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31480,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17177:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31481,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17184:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31482,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17198:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31478,
                        "name": "STF_CERTF_CFD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31947,
                        "src": "17156:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17156:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31484,
                    "nodeType": "Return",
                    "src": "17149:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31486,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17225:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31487,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17238:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17238:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17225:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31497,
                  "nodeType": "IfStatement",
                  "src": "17221:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31491,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17274:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31492,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17281:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31493,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17288:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31494,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17302:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31490,
                        "name": "STF_CERTF_CPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31976,
                        "src": "17260:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17260:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31496,
                    "nodeType": "Return",
                    "src": "17253:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31498,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17329:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31499,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17342:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17342:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17329:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31509,
                  "nodeType": "IfStatement",
                  "src": "17325:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31503,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17378:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31504,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17385:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31505,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17392:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31506,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17406:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31502,
                        "name": "STF_CERTF_RFD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32020,
                        "src": "17364:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17364:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31508,
                    "nodeType": "Return",
                    "src": "17357:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31510,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17433:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31511,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17446:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17446:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17433:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31521,
                  "nodeType": "IfStatement",
                  "src": "17429:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31515,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17480:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31516,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17487:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31517,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17494:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31518,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17508:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31514,
                        "name": "STF_CERTF_XD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32052,
                        "src": "17467:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17467:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31520,
                    "nodeType": "Return",
                    "src": "17460:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31522,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17535:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31523,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17548:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17548:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17535:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31533,
                  "nodeType": "IfStatement",
                  "src": "17531:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31527,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17584:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31528,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17591:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31529,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17598:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31530,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17612:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31526,
                        "name": "STF_CERTF_RPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32124,
                        "src": "17570:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17570:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31532,
                    "nodeType": "Return",
                    "src": "17563:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31534,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17639:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31535,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17652:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31536,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17652:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17639:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31545,
                  "nodeType": "IfStatement",
                  "src": "17635:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31539,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17686:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31540,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17693:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31541,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17700:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31542,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17714:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31538,
                        "name": "STF_CERTF_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32159,
                        "src": "17673:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17673:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31544,
                    "nodeType": "Return",
                    "src": "17666:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31546,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17741:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31547,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17754:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17754:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17741:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31557,
                  "nodeType": "IfStatement",
                  "src": "17737:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31551,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17788:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31552,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17795:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31553,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17802:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31554,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17816:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31550,
                        "name": "STF_CERTF_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32188,
                        "src": "17775:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17775:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31556,
                    "nodeType": "Return",
                    "src": "17768:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31558,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17843:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31559,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17856:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17856:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17843:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31569,
                  "nodeType": "IfStatement",
                  "src": "17839:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31563,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17890:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31564,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17897:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31565,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17904:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31566,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17918:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31562,
                        "name": "STF_CERTF_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32321,
                        "src": "17877:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17877:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31568,
                    "nodeType": "Return",
                    "src": "17870:61:97"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4345525446456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 31571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17949:58:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e65b8bc938709c4333f69472f08809889c3105e0574743ddc3189591270c888c",
                          "typeString": "literal_string \"CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e65b8bc938709c4333f69472f08809889c3105e0574743ddc3189591270c888c",
                          "typeString": "literal_string \"CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 31570,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "17942:6:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 31572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17942:66:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 31573,
                  "nodeType": "ExpressionStatement",
                  "src": "17942:66:97"
                }
              ]
            },
            "documentation": {
              "id": 31429,
              "nodeType": "StructuredDocumentation",
              "src": "15952:649:97",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Applies an event to the current state of the contract and returns the resulting state.\n The inheriting Engine contract has to map the events type to the designated STF.\n todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which to evaluate the next state for\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "id": 31575,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 31438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31431,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16648:23:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31430,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "16648:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31433,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16681:18:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31432,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16681:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31435,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16709:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31434,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16709:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31437,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16733:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31436,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16733:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16638:121:97"
            },
            "returnParameters": {
              "id": 31441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31440,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16807:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31439,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16807:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16806:14:97"
            },
            "scope": 31693,
            "src": "16606:1409:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31691,
              "nodeType": "Block",
              "src": "18750:861:97",
              "statements": [
                {
                  "assignments": [
                    31590,
                    31592
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31590,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31691,
                      "src": "18761:19:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 31589,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "18761:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 31592,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31691,
                      "src": "18782:20:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18782:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31596,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31594,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31582,
                        "src": "18818:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 31593,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "18806:11:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 31595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18806:19:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18760:65:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31597,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18840:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31598,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18853:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ID",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18853:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18840:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31603,
                  "nodeType": "IfStatement",
                  "src": "18836:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18874:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31602,
                    "nodeType": "Return",
                    "src": "18867:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31604,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18889:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31605,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18902:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18902:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18889:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31610,
                  "nodeType": "IfStatement",
                  "src": "18885:40:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18924:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31609,
                    "nodeType": "Return",
                    "src": "18917:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31611,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18939:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31612,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18952:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18952:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18939:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31617,
                  "nodeType": "IfStatement",
                  "src": "18935:40:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18974:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31616,
                    "nodeType": "Return",
                    "src": "18967:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31618,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18989:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31619,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19002:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19002:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18989:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31624,
                  "nodeType": "IfStatement",
                  "src": "18985:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19023:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31623,
                    "nodeType": "Return",
                    "src": "19016:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31625,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19038:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31626,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19051:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19051:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19038:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31631,
                  "nodeType": "IfStatement",
                  "src": "19034:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19072:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31630,
                    "nodeType": "Return",
                    "src": "19065:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31632,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19087:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31633,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19100:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19100:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19087:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31638,
                  "nodeType": "IfStatement",
                  "src": "19083:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19121:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31637,
                    "nodeType": "Return",
                    "src": "19114:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31639,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19136:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31640,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19149:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19149:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19136:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31650,
                  "nodeType": "IfStatement",
                  "src": "19132:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31644,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19185:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31645,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19192:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31646,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19199:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31647,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19213:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31643,
                        "name": "POF_CERTF_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31728,
                        "src": "19171:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19171:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31649,
                    "nodeType": "Return",
                    "src": "19164:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31651,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19240:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31652,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19253:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19253:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19240:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31662,
                  "nodeType": "IfStatement",
                  "src": "19236:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31656,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19289:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31657,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19296:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31658,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19303:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31659,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19317:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31655,
                        "name": "POF_CERTF_CPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31756,
                        "src": "19275:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19275:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31661,
                    "nodeType": "Return",
                    "src": "19268:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31663,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19344:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31664,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19357:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19357:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19344:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31674,
                  "nodeType": "IfStatement",
                  "src": "19340:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31668,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19393:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31669,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19400:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31670,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19407:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31671,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19421:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31667,
                        "name": "POF_CERTF_RPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31784,
                        "src": "19379:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19379:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31673,
                    "nodeType": "Return",
                    "src": "19372:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31675,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19448:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31676,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19461:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19461:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19448:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31686,
                  "nodeType": "IfStatement",
                  "src": "19444:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31680,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19495:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31681,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19502:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31682,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19509:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31683,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19523:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31679,
                        "name": "POF_CERTF_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31812,
                        "src": "19482:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19482:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31685,
                    "nodeType": "Return",
                    "src": "19475:61:97"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4345525446456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 31688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19554:49:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_29b1626a82c263cb658a393ba9606c47e81feaad9f69118767b3538e09ffc0b2",
                          "typeString": "literal_string \"CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_29b1626a82c263cb658a393ba9606c47e81feaad9f69118767b3538e09ffc0b2",
                          "typeString": "literal_string \"CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 31687,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "19547:6:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 31689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19547:57:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 31690,
                  "nodeType": "ExpressionStatement",
                  "src": "19547:57:97"
                }
              ]
            },
            "documentation": {
              "id": 31576,
              "nodeType": "StructuredDocumentation",
              "src": "18021:520:97",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Computes the payoff for an event under the current state of the contract.\n The inheriting Engine contract has to map the events type to the designated POF.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation\n @return the payoff of the event"
            },
            "id": 31692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 31585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31578,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18579:23:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31577,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "18579:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31580,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18612:18:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31579,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18612:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31582,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18640:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31581,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18640:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31584,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18664:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31583,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18664:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18569:121:97"
            },
            "returnParameters": {
              "id": 31588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31587,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18738:6:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 31586,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18738:6:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18737:8:97"
            },
            "scope": 31693,
            "src": "18546:1065:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 31694,
        "src": "440:19173:97"
      }
    ],
    "src": "41:19573:97"
  },
  "legacyAST": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFEngine.sol",
    "exportedSymbols": {
      "CERTFEngine": [
        31693
      ]
    },
    "id": 31694,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 30296,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:97"
      },
      {
        "id": 30297,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:97"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 30298,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 24036,
        "src": "101:29:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "file": "./ICERTFEngine.sol",
        "id": 30299,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 32424,
        "src": "131:28:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFSTF.sol",
        "file": "./CERTFSTF.sol",
        "id": 30300,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 32323,
        "src": "160:24:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/CERTFPOF.sol",
        "file": "./CERTFPOF.sol",
        "id": 30301,
        "nodeType": "ImportDirective",
        "scope": 31694,
        "sourceUnit": 31814,
        "src": "185:24:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30303,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "464:4:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 30304,
            "nodeType": "InheritanceSpecifier",
            "src": "464:4:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30305,
              "name": "CERTFSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32322,
              "src": "470:8:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFSTF_$32322",
                "typeString": "contract CERTFSTF"
              }
            },
            "id": 30306,
            "nodeType": "InheritanceSpecifier",
            "src": "470:8:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30307,
              "name": "CERTFPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31813,
              "src": "480:8:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFPOF_$31813",
                "typeString": "contract CERTFPOF"
              }
            },
            "id": 30308,
            "nodeType": "InheritanceSpecifier",
            "src": "480:8:97"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 30309,
              "name": "ICERTFEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 32423,
              "src": "490:12:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                "typeString": "contract ICERTFEngine"
              }
            },
            "id": 30310,
            "nodeType": "InheritanceSpecifier",
            "src": "490:12:97"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          31813,
          32322,
          32423,
          32432
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 30302,
          "nodeType": "StructuredDocumentation",
          "src": "212:227:97",
          "text": " @title CERTFEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a CERTF contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 31693,
        "linearizedBaseContracts": [
          31693,
          32423,
          32432,
          31813,
          32322,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "CERTFEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 30319,
              "nodeType": "Block",
              "src": "580:42:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 30316,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "597:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 30317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "CERTF",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "597:18:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 30315,
                  "id": 30318,
                  "nodeType": "Return",
                  "src": "590:25:97"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 30320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30312,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "548:8:97"
            },
            "parameters": {
              "id": 30311,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "531:2:97"
            },
            "returnParameters": {
              "id": 30315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30314,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30320,
                  "src": "566:12:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30313,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "566:12:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "565:14:97"
            },
            "scope": 31693,
            "src": "510:112:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32352
            ],
            "body": {
              "id": 30342,
              "nodeType": "Block",
              "src": "1273:141:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30336,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30323,
                        "src": "1327:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30337,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30325,
                        "src": "1346:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30338,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30327,
                        "src": "1365:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30339,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30329,
                        "src": "1385:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 30335,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31575,
                      "src": "1290:23:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 30340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1290:117:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 30334,
                  "id": 30341,
                  "nodeType": "Return",
                  "src": "1283:124:97"
                }
              ]
            },
            "documentation": {
              "id": 30321,
              "nodeType": "StructuredDocumentation",
              "src": "628:403:97",
              "text": " Applys an event to the current state of a contract and returns the resulting contract state.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event to be applied to the contract state\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "functionSelector": "f5235586",
            "id": 30343,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30331,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1229:8:97"
            },
            "parameters": {
              "id": 30330,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30323,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1075:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30322,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1075:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30325,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1110:20:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30324,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1110:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30327,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1140:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30326,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30329,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1164:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30328,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1164:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1065:125:97"
            },
            "returnParameters": {
              "id": 30334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30333,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30343,
                  "src": "1255:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30332,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1255:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1254:14:97"
            },
            "scope": 31693,
            "src": "1036:378:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32366
            ],
            "body": {
              "id": 30393,
              "nodeType": "Block",
              "src": "2030:504:97",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 30370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 30364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30358,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2124:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22870,
                        "src": "2124:24:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2160:1:97",
                            "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": 30361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2152:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 30360,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2152:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 30363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2152:10:97",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2124:38:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 30369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30365,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2166:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22868,
                        "src": "2166:14:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 30367,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 30346,
                          "src": "2184:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                            "typeString": "struct CERTFTerms calldata"
                          }
                        },
                        "id": 30368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22870,
                        "src": "2184:24:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2166:42:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2124:84:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30385,
                  "nodeType": "IfStatement",
                  "src": "2120:282:97",
                  "trueBody": {
                    "id": 30384,
                    "nodeType": "Block",
                    "src": "2210:192:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30380,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30352,
                                  "src": "2377:12:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 30379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2370:6:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 30378,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2370:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 30381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2370:20:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 30372,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30346,
                                  "src": "2263:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30373,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30348,
                                  "src": "2286:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30374,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30350,
                                  "src": "2309:6:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 30375,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30352,
                                  "src": "2333:12:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 30371,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31692,
                                "src": "2231:14:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 30376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2231:128:97",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 30377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2231:138:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 30382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2231:160:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 30357,
                        "id": 30383,
                        "nodeType": "Return",
                        "src": "2224:167:97"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30387,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30346,
                        "src": "2447:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30388,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30348,
                        "src": "2466:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30389,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30350,
                        "src": "2485:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 30390,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30352,
                        "src": "2505:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 30386,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31692,
                      "src": "2419:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct CERTFTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 30391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2419:108:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 30357,
                  "id": 30392,
                  "nodeType": "Return",
                  "src": "2412:115:97"
                }
              ]
            },
            "documentation": {
              "id": 30344,
              "nodeType": "StructuredDocumentation",
              "src": "1420:373:97",
              "text": " Evaluates the payoff for an event under the current state of the contract.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation (e.g. fxRate)\n @return the payoff of the event"
            },
            "functionSelector": "ffcbfc65",
            "id": 30394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30354,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1992:8:97"
            },
            "parameters": {
              "id": 30353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30346,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1838:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30345,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1838:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30348,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1873:20:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30347,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1873:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30350,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1903:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30349,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30352,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "1927:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 30351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1927:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1828:125:97"
            },
            "returnParameters": {
              "id": 30357,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30356,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30394,
                  "src": "2018:6:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 30355,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2018:6:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2017:8:97"
            },
            "scope": 31693,
            "src": "1798:736:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32338
            ],
            "body": {
              "id": 30459,
              "nodeType": "Block",
              "src": "2861:407:97",
              "statements": [
                {
                  "assignments": [
                    30404
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30404,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30459,
                      "src": "2871:18:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 30403,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2871:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30405,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2871:18:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30406,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2900:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "quantity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22666,
                      "src": "2900:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2917:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2900:18:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30411,
                  "nodeType": "ExpressionStatement",
                  "src": "2900:18:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30412,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2928:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30414,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "exerciseQuantity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22664,
                      "src": "2928:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2953:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2928:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30417,
                  "nodeType": "ExpressionStatement",
                  "src": "2928:26:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30422,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30418,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "2964:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "marginFactor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22670,
                      "src": "2964:18:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 30421,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "2985:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2964:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30423,
                  "nodeType": "ExpressionStatement",
                  "src": "2964:35:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30424,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3009:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30426,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "adjustmentFactor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22672,
                      "src": "3009:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 30427,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3034:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3009:39:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30429,
                  "nodeType": "ExpressionStatement",
                  "src": "3009:39:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30435,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30430,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3058:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30432,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lastCouponDay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22646,
                      "src": "3058:19:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30433,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30397,
                        "src": "3080:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30434,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "issueDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22880,
                      "src": "3080:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3058:37:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 30436,
                  "nodeType": "ExpressionStatement",
                  "src": "3058:37:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30437,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3105:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "couponAmountFixed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22668,
                      "src": "3105:23:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30440,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3131:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3105:27:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 30442,
                  "nodeType": "ExpressionStatement",
                  "src": "3105:27:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30443,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3143:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "3143:25:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30446,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "3171:19:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 30447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3171:22:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "3143:50:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 30449,
                  "nodeType": "ExpressionStatement",
                  "src": "3143:50:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30450,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30404,
                        "src": "3203:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 30452,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3203:16:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30453,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30397,
                        "src": "3222:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22874,
                      "src": "3222:16:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3203:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 30456,
                  "nodeType": "ExpressionStatement",
                  "src": "3203:35:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30457,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30404,
                    "src": "3256:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 30402,
                  "id": 30458,
                  "nodeType": "Return",
                  "src": "3249:12:97"
                }
              ]
            },
            "documentation": {
              "id": 30395,
              "nodeType": "StructuredDocumentation",
              "src": "2540:178:97",
              "text": " @notice Initialize contract state space based on the contract terms.\n @param terms terms of the contract\n @return the initial state of the contract"
            },
            "functionSelector": "bccf8f31",
            "id": 30460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30399,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2817:8:97"
            },
            "parameters": {
              "id": 30398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30397,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30460,
                  "src": "2752:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30396,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "2752:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2751:27:97"
            },
            "returnParameters": {
              "id": 30402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30401,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30460,
                  "src": "2843:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30400,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2843:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2842:14:97"
            },
            "scope": 31693,
            "src": "2723:545:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32379
            ],
            "body": {
              "id": 30603,
              "nodeType": "Block",
              "src": "3859:1146:97",
              "statements": [
                {
                  "assignments": [
                    30479
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30479,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "3869:46:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30477,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3869:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30478,
                        "length": {
                          "argumentTypes": null,
                          "id": 30476,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "3877:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "3869:32:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30480,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3869:46:97"
                },
                {
                  "assignments": [
                    30482
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30482,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "3925:12:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 30481,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "3925:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30483,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3925:12:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30484,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "3974:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "issueDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22880,
                      "src": "3974:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3993:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3974:20:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30511,
                  "nodeType": "IfStatement",
                  "src": "3970:226:97",
                  "trueBody": {
                    "id": 30510,
                    "nodeType": "Block",
                    "src": "3996:200:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30489,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30463,
                                "src": "4026:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                  "typeString": "struct CERTFTerms calldata"
                                }
                              },
                              "id": 30490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "issueDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22880,
                              "src": "4026:15:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30491,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30465,
                              "src": "4043:12:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30492,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30467,
                              "src": "4057:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30488,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4014:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 30493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4014:54:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30509,
                        "nodeType": "IfStatement",
                        "src": "4010:176:97",
                        "trueBody": {
                          "id": 30508,
                          "nodeType": "Block",
                          "src": "4070:116:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30494,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4088:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30496,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30495,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4095:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4088:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30498,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4116:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30499,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "ID",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4116:12:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30500,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4130:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30501,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "issueDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22880,
                                      "src": "4130:15:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30497,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4104:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4104:42:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4088:58:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30504,
                              "nodeType": "ExpressionStatement",
                              "src": "4088:58:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4164:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30505,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4164:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30507,
                              "nodeType": "ExpressionStatement",
                              "src": "4164:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30512,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "4238:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialExchangeDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22876,
                      "src": "4238:25:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4267:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4238:30:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30539,
                  "nodeType": "IfStatement",
                  "src": "4234:257:97",
                  "trueBody": {
                    "id": 30538,
                    "nodeType": "Block",
                    "src": "4270:221:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 30517,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30463,
                                "src": "4300:5:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                  "typeString": "struct CERTFTerms calldata"
                                }
                              },
                              "id": 30518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "initialExchangeDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22876,
                              "src": "4300:25:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30519,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30465,
                              "src": "4327:12:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 30520,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30467,
                              "src": "4341:10:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 30516,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4288:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 30521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4288:64:97",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30537,
                        "nodeType": "IfStatement",
                        "src": "4284:197:97",
                        "trueBody": {
                          "id": 30536,
                          "nodeType": "Block",
                          "src": "4354:127:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30522,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4372:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30524,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30523,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4379:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4372:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30526,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4400:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30527,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "IED",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4400:13:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30528,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4415:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30529,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "initialExchangeDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22876,
                                      "src": "4415:25:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30525,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4388:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4388:53:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4372:69:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30532,
                              "nodeType": "ExpressionStatement",
                              "src": "4372:69:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4459:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30533,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4459:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30535,
                              "nodeType": "ExpressionStatement",
                              "src": "4459:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30540,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30463,
                        "src": "4531:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      },
                      "id": 30541,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22878,
                      "src": "4531:18:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4553:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4531:23:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30569,
                  "nodeType": "IfStatement",
                  "src": "4527:243:97",
                  "trueBody": {
                    "id": 30568,
                    "nodeType": "Block",
                    "src": "4556:214:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 30551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30545,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30463,
                                  "src": "4586:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                    "typeString": "struct CERTFTerms calldata"
                                  }
                                },
                                "id": 30546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22878,
                                "src": "4586:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 30547,
                                "name": "segmentStart",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30465,
                                "src": "4606:12:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 30548,
                                "name": "segmentEnd",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30467,
                                "src": "4620:10:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 30544,
                              "name": "isInSegment",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24667,
                              "src": "4574:11:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                              }
                            },
                            "id": 30549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4574:57:97",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 30550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4635:4:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4574:65:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30567,
                        "nodeType": "IfStatement",
                        "src": "4570:190:97",
                        "trueBody": {
                          "id": 30566,
                          "nodeType": "Block",
                          "src": "4641:119:97",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 30552,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30479,
                                    "src": "4659:6:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 30554,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 30553,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30482,
                                    "src": "4666:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4659:13:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30556,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4687:9:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 30557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "MD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4687:12:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30558,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30463,
                                        "src": "4701:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "4701:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 30555,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4675:11:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 30560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4675:45:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4659:61:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 30562,
                              "nodeType": "ExpressionStatement",
                              "src": "4659:61:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 30564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4738:7:97",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 30563,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30482,
                                  "src": "4738:5:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 30565,
                              "nodeType": "ExpressionStatement",
                              "src": "4738:7:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    30574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30574,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 30603,
                      "src": "4831:25:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30572,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4831:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30573,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4831:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30580,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 30578,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30482,
                        "src": "4873:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 30577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4859:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30575,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4863:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30576,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4863:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 30579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4859:20:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4831:48:97"
                },
                {
                  "body": {
                    "id": 30599,
                    "nodeType": "Block",
                    "src": "4925:48:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 30591,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30574,
                              "src": "4939:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 30593,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 30592,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30582,
                              "src": "4948:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4939:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 30594,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30479,
                              "src": "4953:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 30596,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 30595,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30582,
                              "src": "4960:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4953:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4939:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30598,
                        "nodeType": "ExpressionStatement",
                        "src": "4939:23:97"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 30587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30585,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30582,
                      "src": "4909:1:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 30586,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30482,
                      "src": "4913:5:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4909:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 30600,
                  "initializationExpression": {
                    "assignments": [
                      30582
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 30582,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30600,
                        "src": "4894:9:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4894:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 30584,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 30583,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4906:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4894:13:97"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 30589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4920:3:97",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 30588,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30582,
                        "src": "4920:1:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 30590,
                    "nodeType": "ExpressionStatement",
                    "src": "4920:3:97"
                  },
                  "nodeType": "ForStatement",
                  "src": "4889:84:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 30601,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 30574,
                    "src": "4990:8:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 30473,
                  "id": 30602,
                  "nodeType": "Return",
                  "src": "4983:15:97"
                }
              ]
            },
            "documentation": {
              "id": 30461,
              "nodeType": "StructuredDocumentation",
              "src": "3274:354:97",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @return segment of the non-cyclic schedule"
            },
            "functionSelector": "6021c23b",
            "id": 30604,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30469,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3811:8:97"
            },
            "parameters": {
              "id": 30468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30463,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3683:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30462,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "3683:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30465,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3718:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30464,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3718:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30467,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3748:18:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3748:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3673:99:97"
            },
            "returnParameters": {
              "id": 30473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30472,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 30604,
                  "src": "3837:16:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30470,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3837:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 30471,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3837:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:18:97"
            },
            "scope": 31693,
            "src": "3633:1372:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32394
            ],
            "body": {
              "id": 31144,
              "nodeType": "Block",
              "src": "5662:5549:97",
              "statements": [
                {
                  "assignments": [
                    30625
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30625,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "5672:46:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 30623,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5672:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 30624,
                        "length": {
                          "argumentTypes": null,
                          "id": 30622,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "5680:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5672:32:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30626,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5672:46:97"
                },
                {
                  "assignments": [
                    30628
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 30628,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "5728:13:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 30627,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5728:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 30629,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5728:13:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30630,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "5756:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30631,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "5769:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5769:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "5756:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30720,
                  "nodeType": "IfStatement",
                  "src": "5752:917:97",
                  "trueBody": {
                    "id": 30719,
                    "nodeType": "Block",
                    "src": "5784:885:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30634,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "5802:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "5802:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5835:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5802:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30718,
                        "nodeType": "IfStatement",
                        "src": "5798:861:97",
                        "trueBody": {
                          "id": 30717,
                          "nodeType": "Block",
                          "src": "5838:821:97",
                          "statements": [
                            {
                              "assignments": [
                                30643
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30643,
                                  "mutability": "mutable",
                                  "name": "couponSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30717,
                                  "src": "5856:45:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30641,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5856:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30642,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30640,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "5864:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "5856:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30671,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30645,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "5954:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "5954:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30650,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30647,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6006:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30648,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6006:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30649,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6027:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6006:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30651,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6005:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30654,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "6053:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6005:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30652,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "6032:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30653,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "6032:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30656,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6085:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30657,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "6085:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30658,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6126:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "6126:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30663,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30660,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6175:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30661,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6175:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6196:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6175:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30664,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6174:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6208:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6174:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6201:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30668,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "6235:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30669,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "6269:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30644,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "5904:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5904:393:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5856:441:97"
                            },
                            {
                              "body": {
                                "id": 30715,
                                "nodeType": "Block",
                                "src": "6358:287:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30686,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30682,
                                          "name": "couponSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30643,
                                          "src": "6384:14:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30684,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30683,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30673,
                                          "src": "6399:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6384:17:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30685,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6405:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6384:22:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30688,
                                    "nodeType": "IfStatement",
                                    "src": "6380:33:97",
                                    "trueBody": {
                                      "id": 30687,
                                      "nodeType": "Break",
                                      "src": "6408:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30690,
                                              "name": "couponSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30643,
                                              "src": "6451:14:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30692,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30691,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30673,
                                              "src": "6466:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6451:17:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30693,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "6470:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30694,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "6484:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30689,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6439:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6439:56:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6499:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6439:65:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30699,
                                    "nodeType": "IfStatement",
                                    "src": "6435:79:97",
                                    "trueBody": {
                                      "id": 30698,
                                      "nodeType": "Continue",
                                      "src": "6506:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30700,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "6536:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30702,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30701,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "6543:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6536:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30704,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "6564:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30705,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "CFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6564:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30706,
                                              "name": "couponSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30643,
                                              "src": "6579:14:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30708,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30707,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30673,
                                              "src": "6594:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6579:17:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30703,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "6552:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6552:45:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "6536:61:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30711,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6536:61:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "6619:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30712,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "6619:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30714,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6619:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30676,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30673,
                                  "src": "6333:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30677,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6337:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6333:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30716,
                              "initializationExpression": {
                                "assignments": [
                                  30673
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30673,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30716,
                                    "src": "6320:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30672,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6320:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30675,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6330:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6320:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6353:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30679,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30673,
                                    "src": "6353:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30681,
                                "nodeType": "ExpressionStatement",
                                "src": "6353:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "6315:330:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30721,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "6684:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30722,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6697:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6697:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6684:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30817,
                  "nodeType": "IfStatement",
                  "src": "6680:1065:97",
                  "trueBody": {
                    "id": 30816,
                    "nodeType": "Block",
                    "src": "6712:1033:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30725,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "6730:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "6730:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6763:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6730:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30815,
                        "nodeType": "IfStatement",
                        "src": "6726:1009:97",
                        "trueBody": {
                          "id": 30814,
                          "nodeType": "Block",
                          "src": "6766:969:97",
                          "statements": [
                            {
                              "assignments": [
                                30734
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30734,
                                  "mutability": "mutable",
                                  "name": "couponSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30814,
                                  "src": "6784:45:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30732,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6784:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30733,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30731,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "6792:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "6784:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30762,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30736,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "6882:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "6882:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30741,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30738,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "6934:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30739,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "6934:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30740,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6955:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6934:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30742,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6933:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30745,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "6981:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "6933:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30743,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "6960:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30744,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "6960:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30747,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7013:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "7013:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30749,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7054:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "7054:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30754,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30751,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "7103:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30752,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "7103:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30753,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7124:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7103:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30755,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "7102:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7136:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "7102:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7129:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30759,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "7163:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30760,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "7197:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30735,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6832:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6832:393:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6784:441:97"
                            },
                            {
                              "body": {
                                "id": 30812,
                                "nodeType": "Block",
                                "src": "7286:435:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30773,
                                          "name": "couponSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30734,
                                          "src": "7312:14:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30775,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30774,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30764,
                                          "src": "7327:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7312:17:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30776,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7333:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "7312:22:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30779,
                                    "nodeType": "IfStatement",
                                    "src": "7308:33:97",
                                    "trueBody": {
                                      "id": 30778,
                                      "nodeType": "Break",
                                      "src": "7336:5:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      30781
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 30781,
                                        "mutability": "mutable",
                                        "name": "couponPaymentDayScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 30812,
                                        "src": "7363:36:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 30780,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7363:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 30789,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 30783,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "7425:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 30784,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "settlementPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22902,
                                          "src": "7425:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 30785,
                                            "name": "couponSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30734,
                                            "src": "7449:14:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 30787,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 30786,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30764,
                                            "src": "7464:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7449:17:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 30782,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "7402:22:97",
                                        "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": 30788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7402:65:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7363:104:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30796,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 30791,
                                            "name": "couponPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30781,
                                            "src": "7505:28:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30792,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "7535:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30793,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "7549:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30790,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "7493:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7493:67:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30795,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7564:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "7493:76:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30798,
                                    "nodeType": "IfStatement",
                                    "src": "7489:90:97",
                                    "trueBody": {
                                      "id": 30797,
                                      "nodeType": "Continue",
                                      "src": "7571:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30807,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30799,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "7601:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30801,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30800,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "7608:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7601:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30803,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7629:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30804,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "CFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7629:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30805,
                                            "name": "couponPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30781,
                                            "src": "7644:28:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30802,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7617:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7617:56:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7601:72:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30808,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7601:72:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7695:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30809,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "7695:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30811,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7695:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30767,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30764,
                                  "src": "7261:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30768,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "7265:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7261:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30813,
                              "initializationExpression": {
                                "assignments": [
                                  30764
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30764,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30813,
                                    "src": "7248:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30763,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7248:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30766,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7258:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7248:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "7281:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30770,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30764,
                                    "src": "7281:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30772,
                                "nodeType": "ExpressionStatement",
                                "src": "7281:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "7243:478:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30818,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "7759:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30819,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "7772:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30820,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7772:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "7759:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 30908,
                  "nodeType": "IfStatement",
                  "src": "7755:945:97",
                  "trueBody": {
                    "id": 30907,
                    "nodeType": "Block",
                    "src": "7787:913:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30822,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "7805:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "7805:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7842:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7805:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 30906,
                        "nodeType": "IfStatement",
                        "src": "7801:889:97",
                        "trueBody": {
                          "id": 30905,
                          "nodeType": "Block",
                          "src": "7845:845:97",
                          "statements": [
                            {
                              "assignments": [
                                30831
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30831,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 30905,
                                  "src": "7863:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30829,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7863:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30830,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30828,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7871:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7863:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30859,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30833,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "7965:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "7965:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30838,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30835,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8021:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30836,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8021:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30837,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8042:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8021:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30839,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8020:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30842,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "8068:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30843,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8020:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30840,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "8047:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30841,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "8047:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30844,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8100:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "8100:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30846,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8145:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30847,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "8145:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30851,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30848,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8194:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30849,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8194:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30850,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8215:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8194:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30852,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8193:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30854,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8227:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30855,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8193:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30853,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8220:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30856,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "8254:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30857,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "8288:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30832,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7915:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7915:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7863:453:97"
                            },
                            {
                              "body": {
                                "id": 30903,
                                "nodeType": "Block",
                                "src": "8377:299:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30874,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30870,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30831,
                                          "src": "8403:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30872,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30871,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30861,
                                          "src": "8422:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8403:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30873,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8428:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8403:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30876,
                                    "nodeType": "IfStatement",
                                    "src": "8399:37:97",
                                    "trueBody": {
                                      "id": 30875,
                                      "nodeType": "Break",
                                      "src": "8431:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30885,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30878,
                                              "name": "redemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30831,
                                              "src": "8474:18:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30880,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30879,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30861,
                                              "src": "8493:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8474:21:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30881,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "8497:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30882,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "8511:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30877,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8462:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30883,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8462:60:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30884,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8526:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8462:69:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30887,
                                    "nodeType": "IfStatement",
                                    "src": "8458:83:97",
                                    "trueBody": {
                                      "id": 30886,
                                      "nodeType": "Continue",
                                      "src": "8533:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30888,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "8563:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30890,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30889,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "8570:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8563:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30892,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8591:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30893,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RFD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8591:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 30894,
                                              "name": "redemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30831,
                                              "src": "8606:18:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 30896,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 30895,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30861,
                                              "src": "8625:1:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8606:21:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30891,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8579:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8579:49:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8563:65:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30899,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8563:65:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8650:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30900,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "8650:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30902,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8650:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30864,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30861,
                                  "src": "8352:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30865,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8356:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8352:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 30904,
                              "initializationExpression": {
                                "assignments": [
                                  30861
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30861,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 30904,
                                    "src": "8339:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30860,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8339:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30863,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8349:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8339:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8372:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30867,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30861,
                                    "src": "8372:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30869,
                                "nodeType": "ExpressionStatement",
                                "src": "8372:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "8334:342:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 30912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 30909,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "8714:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 30910,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8727:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 30911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8727:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8714:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31005,
                  "nodeType": "IfStatement",
                  "src": "8710:1101:97",
                  "trueBody": {
                    "id": 31004,
                    "nodeType": "Block",
                    "src": "8742:1069:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 30916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 30913,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "8760:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 30914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "8760:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 30915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8797:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8760:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31003,
                        "nodeType": "IfStatement",
                        "src": "8756:1045:97",
                        "trueBody": {
                          "id": 31002,
                          "nodeType": "Block",
                          "src": "8800:1001:97",
                          "statements": [
                            {
                              "assignments": [
                                30922
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 30922,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31002,
                                  "src": "8818:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 30920,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8818:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30921,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 30919,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8826:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8818:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 30950,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30924,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "8920:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30925,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "8920:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30929,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30926,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "8976:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30927,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "8976:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30928,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8997:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "8976:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30930,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8975:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 30933,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "9023:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "8975:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 30931,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "9002:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 30932,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "9002:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30935,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "9055:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "9055:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30937,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "9100:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 30938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "9100:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 30942,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30939,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "9149:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 30940,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "9149:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 30941,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9170:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9149:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 30943,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9148:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 30945,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9182:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 30946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "9148:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 30944,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9175:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30947,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "9209:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 30948,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "9243:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 30923,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8870:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 30949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8870:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8818:453:97"
                            },
                            {
                              "body": {
                                "id": 31000,
                                "nodeType": "Block",
                                "src": "9332:455:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 30965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30961,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30922,
                                          "src": "9358:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 30963,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30962,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30952,
                                          "src": "9377:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9358:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 30964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9383:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9358:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30967,
                                    "nodeType": "IfStatement",
                                    "src": "9354:37:97",
                                    "trueBody": {
                                      "id": 30966,
                                      "nodeType": "Break",
                                      "src": "9386:5:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      30969
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 30969,
                                        "mutability": "mutable",
                                        "name": "redemptionPaymentDayScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 31000,
                                        "src": "9413:40:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 30968,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9413:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 30977,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 30971,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "9479:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 30972,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "settlementPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22902,
                                          "src": "9479:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 30973,
                                            "name": "redemptionSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30922,
                                            "src": "9503:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 30975,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 30974,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30952,
                                            "src": "9522:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9503:21:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 30970,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "9456:22:97",
                                        "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": 30976,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9456:69:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9413:112:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 30984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 30979,
                                            "name": "redemptionPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30969,
                                            "src": "9563:32:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30980,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "9597:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30981,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "9611:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30978,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9551:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 30982,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9551:71:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 30983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9626:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9551:80:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 30986,
                                    "nodeType": "IfStatement",
                                    "src": "9547:94:97",
                                    "trueBody": {
                                      "id": 30985,
                                      "nodeType": "Continue",
                                      "src": "9633:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30995,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 30987,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "9663:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 30989,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 30988,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "9670:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9663:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 30991,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9691:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 30992,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "RPD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9691:13:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 30993,
                                            "name": "redemptionPaymentDayScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30969,
                                            "src": "9706:32:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 30990,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9679:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 30994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9679:60:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9663:76:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 30996,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9663:76:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 30998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9761:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 30997,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "9761:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 30999,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9761:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 30957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 30955,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30952,
                                  "src": "9307:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 30956,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9311:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9307:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31001,
                              "initializationExpression": {
                                "assignments": [
                                  30952
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 30952,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 31001,
                                    "src": "9294:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 30951,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9294:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 30954,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 30953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9304:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9294:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 30959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9327:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 30958,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30952,
                                    "src": "9327:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 30960,
                                "nodeType": "ExpressionStatement",
                                "src": "9327:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "9289:498:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31006,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30613,
                      "src": "9825:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31007,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9838:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9838:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9825:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31110,
                  "nodeType": "IfStatement",
                  "src": "9821:1155:97",
                  "trueBody": {
                    "id": 31109,
                    "nodeType": "Block",
                    "src": "9852:1124:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31010,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30607,
                              "src": "9870:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "9870:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9907:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9870:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31108,
                        "nodeType": "IfStatement",
                        "src": "9866:1100:97",
                        "trueBody": {
                          "id": 31107,
                          "nodeType": "Block",
                          "src": "9910:1056:97",
                          "statements": [
                            {
                              "assignments": [
                                31019
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31019,
                                  "mutability": "mutable",
                                  "name": "redemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31107,
                                  "src": "9928:49:97",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 31017,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9928:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31018,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 31016,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9936:14:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9928:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31047,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31021,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10030:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "10030:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 31026,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31023,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "10086:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 31024,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "10086:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 31025,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10107:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10086:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 31027,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10085:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "id": 31030,
                                      "name": "segmentEnd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30611,
                                      "src": "10133:10:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10085:58:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 31028,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30607,
                                        "src": "10112:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                          "typeString": "struct CERTFTerms calldata"
                                        }
                                      },
                                      "id": 31029,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturityDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22878,
                                      "src": "10112:18:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31032,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10165:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "10165:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31034,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 30607,
                                      "src": "10210:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "10210:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 31039,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31036,
                                              "name": "terms",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 30607,
                                              "src": "10259:5:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                                "typeString": "struct CERTFTerms calldata"
                                              }
                                            },
                                            "id": 31037,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "maturityDate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 22878,
                                            "src": "10259:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 31038,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10280:1:97",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10259:22:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 31040,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10258:24:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 31042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10292:5:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "id": 31043,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10258:39:97",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "74727565",
                                      "id": 31041,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10285:4:97",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31044,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30609,
                                    "src": "10319:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31045,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 30611,
                                    "src": "10353:10:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31020,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9980:28:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$120_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,struct IPS memory,enum EndOfMonthConvention,bool,uint256,uint256) pure returns (uint256[120] memory)"
                                  }
                                },
                                "id": 31046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9980:401:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9928:453:97"
                            },
                            {
                              "body": {
                                "id": 31105,
                                "nodeType": "Block",
                                "src": "10442:510:97",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31058,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31019,
                                          "src": "10468:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 31060,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31059,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31049,
                                          "src": "10487:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10468:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 31061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10493:1:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10468:26:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31064,
                                    "nodeType": "IfStatement",
                                    "src": "10464:37:97",
                                    "trueBody": {
                                      "id": 31063,
                                      "nodeType": "Break",
                                      "src": "10496:5:97"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 31070,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31065,
                                          "name": "redemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31019,
                                          "src": "10527:18:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 31067,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31066,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 31049,
                                          "src": "10546:1:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10527:21:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 31068,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30607,
                                          "src": "10552:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                            "typeString": "struct CERTFTerms calldata"
                                          }
                                        },
                                        "id": 31069,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "maturityDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22878,
                                        "src": "10552:18:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10527:43:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31072,
                                    "nodeType": "IfStatement",
                                    "src": "10523:57:97",
                                    "trueBody": {
                                      "id": 31071,
                                      "nodeType": "Continue",
                                      "src": "10572:8:97"
                                    }
                                  },
                                  {
                                    "assignments": [
                                      31074
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 31074,
                                        "mutability": "mutable",
                                        "name": "executionDateScheduleTime",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 31105,
                                        "src": "10602:33:97",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 31073,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10602:7:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 31082,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 31076,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30607,
                                            "src": "10661:5:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                              "typeString": "struct CERTFTerms calldata"
                                            }
                                          },
                                          "id": 31077,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "exercisePeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22906,
                                          "src": "10661:20:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 31078,
                                            "name": "redemptionSchedule",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31019,
                                            "src": "10683:18:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                              "typeString": "uint256[120] memory"
                                            }
                                          },
                                          "id": 31080,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 31079,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31049,
                                            "src": "10702:1:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "10683:21:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                            "typeString": "struct IP calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 31075,
                                        "name": "getTimestampPlusPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24884,
                                        "src": "10638:22:97",
                                        "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": 31081,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10638:67:97",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10602:103:97"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 31089,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 31084,
                                            "name": "executionDateScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31074,
                                            "src": "10743:25:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31085,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30609,
                                            "src": "10770:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31086,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 30611,
                                            "src": "10784:10:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 31083,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10731:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 31087,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10731:64:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 31088,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10799:5:97",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10731:73:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 31091,
                                    "nodeType": "IfStatement",
                                    "src": "10727:87:97",
                                    "trueBody": {
                                      "id": 31090,
                                      "nodeType": "Continue",
                                      "src": "10806:8:97"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31100,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 31092,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30625,
                                          "src": "10836:6:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 31094,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 31093,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 30628,
                                          "src": "10843:5:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10836:13:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 31096,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10864:9:97",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 31097,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "XD",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10864:12:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 31098,
                                            "name": "executionDateScheduleTime",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 31074,
                                            "src": "10878:25:97",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 31095,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10852:11:97",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 31099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10852:52:97",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10836:68:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 31101,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10836:68:97"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10926:7:97",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 31102,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30628,
                                        "src": "10926:5:97",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 31104,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10926:7:97"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31052,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31049,
                                  "src": "10417:1:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 31053,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "10421:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10417:18:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31106,
                              "initializationExpression": {
                                "assignments": [
                                  31049
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 31049,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 31106,
                                    "src": "10404:7:97",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 31048,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10404:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 31051,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 31050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10414:1:97",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "10404:11:97"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 31056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "10437:3:97",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 31055,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31049,
                                    "src": "10437:1:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 31057,
                                "nodeType": "ExpressionStatement",
                                "src": "10437:3:97"
                              },
                              "nodeType": "ForStatement",
                              "src": "10399:553:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    31115
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31115,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31144,
                      "src": "11037:25:97",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31113,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11037:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31114,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11037:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31121,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31119,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 30628,
                        "src": "11079:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 31118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11065:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 31116,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11069:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31117,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11069:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 31120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11065:20:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11037:48:97"
                },
                {
                  "body": {
                    "id": 31140,
                    "nodeType": "Block",
                    "src": "11131:48:97",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 31138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31132,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31115,
                              "src": "11145:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 31134,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31133,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31123,
                              "src": "11154:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11145:11:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 31135,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 30625,
                              "src": "11159:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 31137,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 31136,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31123,
                              "src": "11166:1:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11159:9:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11145:23:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 31139,
                        "nodeType": "ExpressionStatement",
                        "src": "11145:23:97"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 31128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31126,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31123,
                      "src": "11115:1:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 31127,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30628,
                      "src": "11119:5:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11115:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 31141,
                  "initializationExpression": {
                    "assignments": [
                      31123
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 31123,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31141,
                        "src": "11100:9:97",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11100:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 31125,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31124,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11112:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11100:13:97"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 31130,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11126:3:97",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 31129,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31123,
                        "src": "11126:1:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 31131,
                    "nodeType": "ExpressionStatement",
                    "src": "11126:3:97"
                  },
                  "nodeType": "ForStatement",
                  "src": "11095:84:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 31142,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 31115,
                    "src": "11196:8:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 30619,
                  "id": 31143,
                  "nodeType": "Return",
                  "src": "11189:15:97"
                }
              ]
            },
            "documentation": {
              "id": 30605,
              "nodeType": "StructuredDocumentation",
              "src": "5011:395:97",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param segmentStart start timestamp of the segment\n @param segmentEnd end timestamp of the segement\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "d115612f",
            "id": 31145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 30615,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5615:8:97"
            },
            "parameters": {
              "id": 30614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30607,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5458:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30606,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "5458:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30609,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5493:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5493:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30611,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5523:18:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 30610,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5523:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30613,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5551:19:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 30612,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5551:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5448:128:97"
            },
            "returnParameters": {
              "id": 30619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30618,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31145,
                  "src": "5640:16:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 30616,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5640:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 30617,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5640:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5639:18:97"
            },
            "scope": 31693,
            "src": "5411:5800:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32406
            ],
            "body": {
              "id": 31407,
              "nodeType": "Block",
              "src": "11779:3249:97",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31158,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "11793:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31159,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11806:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11806:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11793:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31199,
                  "nodeType": "IfStatement",
                  "src": "11789:523:97",
                  "trueBody": {
                    "id": 31198,
                    "nodeType": "Block",
                    "src": "11821:491:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31162,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "11839:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "11839:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11872:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11839:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31197,
                        "nodeType": "IfStatement",
                        "src": "11835:467:97",
                        "trueBody": {
                          "id": 31196,
                          "nodeType": "Block",
                          "src": "11875:427:97",
                          "statements": [
                            {
                              "assignments": [
                                31167
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31167,
                                  "mutability": "mutable",
                                  "name": "nextCouponDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31196,
                                  "src": "11893:22:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31166,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11893:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31177,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31169,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "11977:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "11977:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31171,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12018:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "12018:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31173,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12066:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "12066:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31175,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "12117:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31168,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11918:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11918:233:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11893:258:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31178,
                                  "name": "nextCouponDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31167,
                                  "src": "12173:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31181,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12199:1:97",
                                      "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": 31180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12191:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31179,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12191:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12191:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12173:28:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31189,
                              "nodeType": "IfStatement",
                              "src": "12169:51:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12218:1:97",
                                      "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": 31185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12210:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31184,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12210:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12210:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31188,
                                "nodeType": "Return",
                                "src": "12203:17:97"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31191,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12257:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "CFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12257:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31193,
                                    "name": "nextCouponDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31167,
                                    "src": "12272:14:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31190,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12245:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12245:42:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31195,
                              "nodeType": "Return",
                              "src": "12238:49:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31200,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "12327:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31201,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12340:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12340:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12327:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31249,
                  "nodeType": "IfStatement",
                  "src": "12323:656:97",
                  "trueBody": {
                    "id": 31248,
                    "nodeType": "Block",
                    "src": "12355:624:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31204,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "12373:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfCoupon",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22886,
                            "src": "12373:29:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12406:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12373:34:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31247,
                        "nodeType": "IfStatement",
                        "src": "12369:600:97",
                        "trueBody": {
                          "id": 31246,
                          "nodeType": "Block",
                          "src": "12409:560:97",
                          "statements": [
                            {
                              "assignments": [
                                31209
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31209,
                                  "mutability": "mutable",
                                  "name": "nextCouponDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31246,
                                  "src": "12427:22:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31208,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12427:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31219,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31211,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12511:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22912,
                                    "src": "12511:19:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31213,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12552:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "12552:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31215,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12600:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfCoupon",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22886,
                                    "src": "12600:29:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31217,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "12651:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31210,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12452:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12452:233:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12427:258:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31220,
                                  "name": "nextCouponDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31209,
                                  "src": "12707:14:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12733:1:97",
                                      "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": 31222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12725:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31221,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12725:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12725:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12707:28:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31231,
                              "nodeType": "IfStatement",
                              "src": "12703:51:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31228,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12752:1:97",
                                      "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": 31227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12744:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31226,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12744:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12744:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31230,
                                "nodeType": "Return",
                                "src": "12737:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31233
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31233,
                                  "mutability": "mutable",
                                  "name": "couponPaymentDayScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31246,
                                  "src": "12772:36:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31232,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12772:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31239,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31235,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "12834:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "settlementPeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22902,
                                    "src": "12834:22:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31237,
                                    "name": "nextCouponDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31209,
                                    "src": "12858:14:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31234,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "12811:22:97",
                                  "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": 31238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12811:62:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12772:101:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31241,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12910:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "CFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12910:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31243,
                                    "name": "couponPaymentDayScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31233,
                                    "src": "12925:28:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31240,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12898:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12898:56:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31245,
                              "nodeType": "Return",
                              "src": "12891:63:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31250,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "12993:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31251,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13006:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13006:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12993:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31291,
                  "nodeType": "IfStatement",
                  "src": "12989:547:97",
                  "trueBody": {
                    "id": 31290,
                    "nodeType": "Block",
                    "src": "13021:515:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31254,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "13039:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "13039:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13076:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13039:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31289,
                        "nodeType": "IfStatement",
                        "src": "13035:491:97",
                        "trueBody": {
                          "id": 31288,
                          "nodeType": "Block",
                          "src": "13079:447:97",
                          "statements": [
                            {
                              "assignments": [
                                31259
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31259,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31288,
                                  "src": "13097:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31258,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13097:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31269,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31261,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13185:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "13185:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31263,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13230:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "13230:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31265,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13278:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "13278:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31267,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "13333:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31260,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13126:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13126:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13097:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31270,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31259,
                                  "src": "13389:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13419:1:97",
                                      "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": 31272,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13411:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31271,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13411:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13411:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13389:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31281,
                              "nodeType": "IfStatement",
                              "src": "13385:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13438:1:97",
                                      "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": 31277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13430:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31276,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13430:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13430:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31280,
                                "nodeType": "Return",
                                "src": "13423:17:97"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31283,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13477:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RFD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13477:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31285,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31259,
                                    "src": "13492:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31282,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13465:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13465:46:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31287,
                              "nodeType": "Return",
                              "src": "13458:53:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31292,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "13550:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31293,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13563:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13563:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13550:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31341,
                  "nodeType": "IfStatement",
                  "src": "13546:688:97",
                  "trueBody": {
                    "id": 31340,
                    "nodeType": "Block",
                    "src": "13578:656:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31296,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "13596:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "13596:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13633:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13596:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31339,
                        "nodeType": "IfStatement",
                        "src": "13592:632:97",
                        "trueBody": {
                          "id": 31338,
                          "nodeType": "Block",
                          "src": "13636:588:97",
                          "statements": [
                            {
                              "assignments": [
                                31301
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31301,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31338,
                                  "src": "13654:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31300,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13654:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31311,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31303,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13742:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "13742:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31305,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13787:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "13787:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31307,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "13835:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "13835:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31309,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "13890:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31302,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13683:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13683:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13654:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31312,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31301,
                                  "src": "13946:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31315,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13976:1:97",
                                      "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": 31314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13968:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31313,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13968:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13968:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13946:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31323,
                              "nodeType": "IfStatement",
                              "src": "13942:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13995:1:97",
                                      "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": 31319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13987:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31318,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13987:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13987:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31322,
                                "nodeType": "Return",
                                "src": "13980:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31325
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31325,
                                  "mutability": "mutable",
                                  "name": "redemptionPaymentDayScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31338,
                                  "src": "14015:40:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31324,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14015:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31331,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31327,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14081:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "settlementPeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22902,
                                    "src": "14081:22:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31329,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31301,
                                    "src": "14105:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31326,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "14058:22:97",
                                  "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": 31330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14058:66:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14015:109:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31333,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14161:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31334,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "RPD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14161:13:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31335,
                                    "name": "redemptionPaymentDayScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31325,
                                    "src": "14176:32:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31332,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14149:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14149:60:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31337,
                              "nodeType": "Return",
                              "src": "14142:67:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31342,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31152,
                      "src": "14248:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31343,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "14261:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31344,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14261:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "14248:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31401,
                  "nodeType": "IfStatement",
                  "src": "14244:751:97",
                  "trueBody": {
                    "id": 31400,
                    "nodeType": "Block",
                    "src": "14275:720:97",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 31349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 31346,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31148,
                              "src": "14293:5:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                "typeString": "struct CERTFTerms calldata"
                              }
                            },
                            "id": 31347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22882,
                            "src": "14293:33:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 31348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14330:1:97",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14293:38:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 31399,
                        "nodeType": "IfStatement",
                        "src": "14289:696:97",
                        "trueBody": {
                          "id": 31398,
                          "nodeType": "Block",
                          "src": "14333:652:97",
                          "statements": [
                            {
                              "assignments": [
                                31351
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31351,
                                  "mutability": "mutable",
                                  "name": "nextRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31398,
                                  "src": "14351:26:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31350,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14351:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31361,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31353,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14439:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22908,
                                    "src": "14439:23:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31355,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14484:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22864,
                                    "src": "14484:26:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31357,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14532:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31358,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22882,
                                    "src": "14532:33:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31359,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31150,
                                    "src": "14587:16:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31352,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "14380:37:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_IPS_$22486_memory_ptr_$_t_enum$_EndOfMonthConvention_$22580_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (struct IPS memory,enum EndOfMonthConvention,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 31360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14380:241:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14351:270:97"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31362,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31351,
                                  "src": "14643:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14673:1:97",
                                      "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": 31364,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14665:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 31363,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14665:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14665:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14643:32:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31373,
                              "nodeType": "IfStatement",
                              "src": "14639:55:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14692:1:97",
                                      "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": 31369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14684:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31368,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14684:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14684:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31372,
                                "nodeType": "Return",
                                "src": "14677:17:97"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 31377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 31374,
                                  "name": "nextRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31351,
                                  "src": "14716:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 31375,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31148,
                                    "src": "14738:5:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                      "typeString": "struct CERTFTerms calldata"
                                    }
                                  },
                                  "id": 31376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22878,
                                  "src": "14738:18:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14716:40:97",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 31383,
                              "nodeType": "IfStatement",
                              "src": "14712:63:97",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 31380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14773:1:97",
                                      "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": 31379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14765:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 31378,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14765:7:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 31381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14765:10:97",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 31157,
                                "id": 31382,
                                "nodeType": "Return",
                                "src": "14758:17:97"
                              }
                            },
                            {
                              "assignments": [
                                31385
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 31385,
                                  "mutability": "mutable",
                                  "name": "executionDateScheduleTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 31398,
                                  "src": "14793:33:97",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 31384,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14793:7:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 31391,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31387,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 31148,
                                      "src": "14852:5:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                                        "typeString": "struct CERTFTerms calldata"
                                      }
                                    },
                                    "id": 31388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "exercisePeriod",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22906,
                                    "src": "14852:20:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31389,
                                    "name": "nextRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31351,
                                    "src": "14874:18:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IP_$22493_calldata_ptr",
                                      "typeString": "struct IP calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31386,
                                  "name": "getTimestampPlusPeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24884,
                                  "src": "14829:22:97",
                                  "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": 31390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14829:64:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14793:100:97"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 31393,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "14930:9:97",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 31394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "XD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14930:12:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 31395,
                                    "name": "executionDateScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 31385,
                                    "src": "14944:25:97",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 31392,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "14918:11:97",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 31396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14918:52:97",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 31157,
                              "id": 31397,
                              "nodeType": "Return",
                              "src": "14911:59:97"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 31404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15019:1:97",
                        "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": 31403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "15011:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 31402,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15011:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 31405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15011:10:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 31157,
                  "id": 31406,
                  "nodeType": "Return",
                  "src": "15004:17:97"
                }
              ]
            },
            "documentation": {
              "id": 31146,
              "nodeType": "StructuredDocumentation",
              "src": "11217:345:97",
              "text": " @notice Computes a schedule segment of cyclic contract events based on the contract terms\n and the specified timestamps.\n @param terms terms of the contract\n @param lastScheduleTime last occurrence of cyclic event\n @param eventType eventType of the cyclic schedule\n @return event schedule segment"
            },
            "functionSelector": "34a64ea2",
            "id": 31408,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 31154,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11741:8:97"
            },
            "parameters": {
              "id": 31153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31148,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11608:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31147,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "11608:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31150,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11643:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 31149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11643:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31152,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11677:19:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31151,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11677:9:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11598:104:97"
            },
            "returnParameters": {
              "id": 31157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31156,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31408,
                  "src": "11766:7:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31155,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11766:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11765:9:97"
            },
            "scope": 31693,
            "src": "11567:3461:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              32422
            ],
            "body": {
              "id": 31427,
              "nodeType": "Block",
              "src": "15918:28:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 31425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15935:4:97",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 31424,
                  "id": 31426,
                  "nodeType": "Return",
                  "src": "15928:11:97"
                }
              ]
            },
            "documentation": {
              "id": 31409,
              "nodeType": "StructuredDocumentation",
              "src": "15034:586:97",
              "text": " @notice Verifies that the provided event is still scheduled under the terms, the current state of the\n contract and the current state of the underlying.\n param _event event for which to check if its still scheduled\n param terms terms of the contract\n param state current state of the contract\n param hasUnderlying boolean indicating whether the contract has an underlying contract\n param underlyingState state of the underlying (empty state object if non-existing)\n @return boolean indicating whether event is still scheduled"
            },
            "functionSelector": "ebbf5526",
            "id": 31428,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 31421,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15882:8:97"
            },
            "parameters": {
              "id": 31420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31411,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15660:7:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31410,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15660:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31413,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15690:19:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31412,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "15690:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31415,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15731:14:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31414,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15731:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31417,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15767:4:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31416,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15767:4:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31419,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15801:14:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31418,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15801:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15650:193:97"
            },
            "returnParameters": {
              "id": 31424,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31423,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31428,
                  "src": "15908:4:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31422,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15908:4:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15907:6:97"
            },
            "scope": 31693,
            "src": "15625:321:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 31574,
              "nodeType": "Block",
              "src": "16825:1190:97",
              "statements": [
                {
                  "assignments": [
                    31443,
                    31445
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31443,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31574,
                      "src": "16836:19:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 31442,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "16836:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 31445,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31574,
                      "src": "16857:20:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31444,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16857:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31449,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31447,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31435,
                        "src": "16893:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 31446,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "16881:11:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 31448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16881:19:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16835:65:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31450,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "16915:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31451,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16928:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ID",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16928:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16915:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31461,
                  "nodeType": "IfStatement",
                  "src": "16911:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31455,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "16962:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31456,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "16969:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31457,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "16976:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31458,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "16990:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31454,
                        "name": "STF_CERTF_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31850,
                        "src": "16949:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16949:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31460,
                    "nodeType": "Return",
                    "src": "16942:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31462,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17017:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31463,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17030:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17030:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17017:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31473,
                  "nodeType": "IfStatement",
                  "src": "17013:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31467,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17066:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31468,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17073:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31469,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17080:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31470,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17094:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31466,
                        "name": "STF_CERTF_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31873,
                        "src": "17052:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17052:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31472,
                    "nodeType": "Return",
                    "src": "17045:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31474,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17121:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31475,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17134:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31476,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17134:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17121:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31485,
                  "nodeType": "IfStatement",
                  "src": "17117:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31479,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17170:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31480,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17177:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31481,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17184:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31482,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17198:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31478,
                        "name": "STF_CERTF_CFD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31947,
                        "src": "17156:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17156:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31484,
                    "nodeType": "Return",
                    "src": "17149:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31486,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17225:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31487,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17238:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17238:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17225:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31497,
                  "nodeType": "IfStatement",
                  "src": "17221:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31491,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17274:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31492,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17281:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31493,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17288:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31494,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17302:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31490,
                        "name": "STF_CERTF_CPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31976,
                        "src": "17260:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17260:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31496,
                    "nodeType": "Return",
                    "src": "17253:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31498,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17329:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31499,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17342:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17342:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17329:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31509,
                  "nodeType": "IfStatement",
                  "src": "17325:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31503,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17378:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31504,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17385:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31505,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17392:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31506,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17406:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31502,
                        "name": "STF_CERTF_RFD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32020,
                        "src": "17364:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17364:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31508,
                    "nodeType": "Return",
                    "src": "17357:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31510,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17433:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31511,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17446:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17446:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17433:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31521,
                  "nodeType": "IfStatement",
                  "src": "17429:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31515,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17480:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31516,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17487:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31517,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17494:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31518,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17508:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31514,
                        "name": "STF_CERTF_XD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32052,
                        "src": "17467:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17467:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31520,
                    "nodeType": "Return",
                    "src": "17460:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31522,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17535:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31523,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17548:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17548:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17535:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31533,
                  "nodeType": "IfStatement",
                  "src": "17531:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31527,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17584:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31528,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17591:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31529,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17598:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31530,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17612:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31526,
                        "name": "STF_CERTF_RPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32124,
                        "src": "17570:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17570:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31532,
                    "nodeType": "Return",
                    "src": "17563:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31534,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17639:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31535,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17652:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31536,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17652:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17639:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31545,
                  "nodeType": "IfStatement",
                  "src": "17635:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31539,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17686:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31540,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17693:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31541,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17700:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31542,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17714:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31538,
                        "name": "STF_CERTF_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32159,
                        "src": "17673:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17673:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31544,
                    "nodeType": "Return",
                    "src": "17666:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31546,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17741:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31547,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17754:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17754:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17741:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31557,
                  "nodeType": "IfStatement",
                  "src": "17737:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31551,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17788:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31552,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17795:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31553,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17802:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31554,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17816:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31550,
                        "name": "STF_CERTF_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32188,
                        "src": "17775:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17775:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31556,
                    "nodeType": "Return",
                    "src": "17768:61:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31558,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31443,
                      "src": "17843:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31559,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17856:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17856:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17843:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31569,
                  "nodeType": "IfStatement",
                  "src": "17839:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31563,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31431,
                          "src": "17890:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31564,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31433,
                          "src": "17897:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31565,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31445,
                          "src": "17904:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31566,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31437,
                          "src": "17918:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31562,
                        "name": "STF_CERTF_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32321,
                        "src": "17877:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 31567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17877:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 31441,
                    "id": 31568,
                    "nodeType": "Return",
                    "src": "17870:61:97"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4345525446456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 31571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17949:58:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e65b8bc938709c4333f69472f08809889c3105e0574743ddc3189591270c888c",
                          "typeString": "literal_string \"CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e65b8bc938709c4333f69472f08809889c3105e0574743ddc3189591270c888c",
                          "typeString": "literal_string \"CERTFEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 31570,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "17942:6:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 31572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17942:66:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 31573,
                  "nodeType": "ExpressionStatement",
                  "src": "17942:66:97"
                }
              ]
            },
            "documentation": {
              "id": 31429,
              "nodeType": "StructuredDocumentation",
              "src": "15952:649:97",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Applies an event to the current state of the contract and returns the resulting state.\n The inheriting Engine contract has to map the events type to the designated STF.\n todo Annuity calculator for RR/RRF events, IPCB events and ICB state variable\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which to evaluate the next state for\n @param externalData external data needed for STF evaluation (e.g. rate for RR events)\n @return the resulting contract state"
            },
            "id": 31575,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 31438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31431,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16648:23:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31430,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "16648:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31433,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16681:18:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31432,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16681:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31435,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16709:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31434,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16709:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31437,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16733:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31436,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16733:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16638:121:97"
            },
            "returnParameters": {
              "id": 31441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31440,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31575,
                  "src": "16807:12:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31439,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16807:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16806:14:97"
            },
            "scope": 31693,
            "src": "16606:1409:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 31691,
              "nodeType": "Block",
              "src": "18750:861:97",
              "statements": [
                {
                  "assignments": [
                    31590,
                    31592
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 31590,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31691,
                      "src": "18761:19:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 31589,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "18761:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 31592,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 31691,
                      "src": "18782:20:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 31591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18782:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 31596,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 31594,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31582,
                        "src": "18818:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 31593,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "18806:11:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 31595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18806:19:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18760:65:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31597,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18840:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31598,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18853:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ID",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18853:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18840:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31603,
                  "nodeType": "IfStatement",
                  "src": "18836:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31601,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18874:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31602,
                    "nodeType": "Return",
                    "src": "18867:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31604,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18889:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31605,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18902:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18902:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18889:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31610,
                  "nodeType": "IfStatement",
                  "src": "18885:40:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18924:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31609,
                    "nodeType": "Return",
                    "src": "18917:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31611,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18939:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31612,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18952:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RFD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18952:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18939:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31617,
                  "nodeType": "IfStatement",
                  "src": "18935:40:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18974:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31616,
                    "nodeType": "Return",
                    "src": "18967:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31618,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "18989:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31619,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19002:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "XD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19002:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18989:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31624,
                  "nodeType": "IfStatement",
                  "src": "18985:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19023:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31623,
                    "nodeType": "Return",
                    "src": "19016:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31625,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19038:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31626,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19051:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19051:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19038:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31631,
                  "nodeType": "IfStatement",
                  "src": "19034:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19072:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31630,
                    "nodeType": "Return",
                    "src": "19065:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31632,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19087:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31633,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19100:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19100:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19087:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31638,
                  "nodeType": "IfStatement",
                  "src": "19083:39:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 31636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19121:1:97",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 31588,
                    "id": 31637,
                    "nodeType": "Return",
                    "src": "19114:8:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31639,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19136:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31640,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19149:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19149:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19136:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31650,
                  "nodeType": "IfStatement",
                  "src": "19132:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31644,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19185:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31645,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19192:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31646,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19199:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31647,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19213:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31643,
                        "name": "POF_CERTF_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31728,
                        "src": "19171:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19171:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31649,
                    "nodeType": "Return",
                    "src": "19164:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31651,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19240:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31652,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19253:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19253:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19240:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31662,
                  "nodeType": "IfStatement",
                  "src": "19236:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31656,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19289:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31657,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19296:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31658,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19303:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31659,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19317:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31655,
                        "name": "POF_CERTF_CPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31756,
                        "src": "19275:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19275:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31661,
                    "nodeType": "Return",
                    "src": "19268:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31663,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19344:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31664,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19357:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RPD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19357:13:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19344:26:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31674,
                  "nodeType": "IfStatement",
                  "src": "19340:94:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31668,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19393:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31669,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19400:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31670,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19407:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31671,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19421:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31667,
                        "name": "POF_CERTF_RPD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31784,
                        "src": "19379:13:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19379:55:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31673,
                    "nodeType": "Return",
                    "src": "19372:62:97"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 31678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 31675,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 31590,
                      "src": "19448:9:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 31676,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19461:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 31677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19461:12:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19448:25:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 31686,
                  "nodeType": "IfStatement",
                  "src": "19444:92:97",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 31680,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31578,
                          "src": "19495:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31681,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31580,
                          "src": "19502:5:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31682,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31592,
                          "src": "19509:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 31683,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 31584,
                          "src": "19523:12:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                            "typeString": "struct CERTFTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 31679,
                        "name": "POF_CERTF_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31812,
                        "src": "19482:12:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct CERTFTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 31684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19482:54:97",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 31588,
                    "id": 31685,
                    "nodeType": "Return",
                    "src": "19475:61:97"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4345525446456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 31688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19554:49:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_29b1626a82c263cb658a393ba9606c47e81feaad9f69118767b3538e09ffc0b2",
                          "typeString": "literal_string \"CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_29b1626a82c263cb658a393ba9606c47e81feaad9f69118767b3538e09ffc0b2",
                          "typeString": "literal_string \"CERTFEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 31687,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "19547:6:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 31689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19547:57:97",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 31690,
                  "nodeType": "ExpressionStatement",
                  "src": "19547:57:97"
                }
              ]
            },
            "documentation": {
              "id": 31576,
              "nodeType": "StructuredDocumentation",
              "src": "18021:520:97",
              "text": " @notice Implements abstract method which is defined in BaseEngine.\n Computes the payoff for an event under the current state of the contract.\n The inheriting Engine contract has to map the events type to the designated POF.\n @param terms terms of the contract\n @param state current state of the contract\n @param _event event for which the payoff should be evaluated\n @param externalData external data needed for POF evaluation\n @return the payoff of the event"
            },
            "id": 31692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 31585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31578,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18579:23:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31577,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "18579:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31580,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18612:18:97",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 31579,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18612:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31582,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18640:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31581,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18640:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31584,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18664:20:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31583,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18664:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18569:121:97"
            },
            "returnParameters": {
              "id": 31588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31587,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 31692,
                  "src": "18738:6:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 31586,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18738:6:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18737:8:97"
            },
            "scope": 31693,
            "src": "18546:1065:97",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 31694,
        "src": "440:19173:97"
      }
    ],
    "src": "41:19573:97"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {},
      "links": {},
      "address": "0xCf4a0f842CCC0F274DF2A8063ffFB9900FBc5333",
      "transactionHash": "0xf7c0ac0fce77f6e25cfe42a37c152c46de557fe28c30fb2185dce34a376e5c3b"
    },
    "5": {
      "events": {},
      "links": {},
      "address": "0xe2D998279A25e046a30A57A6B2c32CBe3eD6d1d9",
      "transactionHash": "0xe633d5e79e6038a89ae42554248a4d9dc99ce5e4ef03cbd0cdad4ab72e41d545"
    },
    "1994": {
      "events": {},
      "links": {},
      "address": "0x0b893858a41C8518c1b7Eb769b34Ed9466c3C0eD",
      "transactionHash": "0x7f72dcc7c64dc32d1ea9b81d211a001c159bf9735cdd1dde4dc07db46d305805"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.412Z",
  "devdoc": {
    "details": "All numbers except unix timestamp are represented as multiple of 10 ** 18",
    "kind": "dev",
    "methods": {
      "adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))": {
        "details": "The following is considered to dertermine if schedule dates are shifted to the end of month: - The convention SD (same day) means not adjusting, EM (end of month) means adjusting - Dates are only shifted if the schedule start date is an end-of-month date - Dates are only shifted if the schedule cycle is based on an \"M\" period unit or multiple thereof",
        "params": {
          "cycle": "the cycle struct",
          "eomc": "the end of month convention to adjust",
          "startTime": "timestamp of the cycle start"
        },
        "returns": {
          "_0": "the adjusted end of month convention"
        }
      },
      "computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256,uint8)": {
        "params": {
          "eventType": "eventType of the cyclic schedule",
          "segmentEnd": "end timestamp of the segement",
          "segmentStart": "start timestamp of the segment",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "event schedule segment"
        }
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "details": "For optimization reasons not located in EventUtil by applying the BDC specified in the terms"
      },
      "computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "params": {
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the initial state of the contract"
        }
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint8)": {
        "params": {
          "eventType": "eventType of the cyclic schedule",
          "lastScheduleTime": "last occurrence of cyclic event",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "event schedule segment"
        }
      },
      "computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256)": {
        "params": {
          "segmentEnd": "end timestamp of the segement",
          "segmentStart": "start timestamp of the segment",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "segment of the non-cyclic schedule"
        }
      },
      "computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "params": {
          "_event": "event for which the payoff should be evaluated",
          "externalData": "external data needed for POF evaluation (e.g. fxRate)",
          "state": "current state of the contract",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the payoff of the event"
        }
      },
      "computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "params": {
          "_event": "event to be applied to the contract state",
          "externalData": "external data needed for STF evaluation (e.g. rate for RR events)",
          "state": "current state of the contract",
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "the resulting contract state"
        }
      },
      "isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "returns": {
          "_0": "boolean indicating whether event is still scheduled"
        }
      }
    },
    "title": "CERTFEngine",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))": {
        "notice": "This function makes an adjustment on the end of month convention."
      },
      "computeCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256,uint8)": {
        "notice": "Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "notice": "Returns the event time for a given schedule time"
      },
      "computeInitialState((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "notice": "Initialize contract state space based on the contract terms."
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint8)": {
        "notice": "Computes a schedule segment of cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computeNonCyclicScheduleSegment((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),uint256,uint256)": {
        "notice": "Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps."
      },
      "computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "notice": "Evaluates the payoff for an event under the current state of the contract."
      },
      "computeStateForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32,bytes32)": {
        "notice": "Applys an event to the current state of a contract and returns the resulting contract state."
      },
      "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"
      },
      "isEventScheduled(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bool,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Verifies that the provided event is still scheduled under the terms, the current state of the contract and the current state of the underlying. param _event event for which to check if its still scheduled param terms terms of the contract param state current state of the contract param hasUnderlying boolean indicating whether the contract has an underlying contract param underlyingState state of the underlying (empty state object if non-existing)"
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a CERTF contract",
    "version": 1
  }
}