{
  "contractName": "ANNEngine",
  "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfPrincipalRedemption",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "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": "cycleOfPrincipalRedemption",
              "type": "tuple"
            }
          ],
          "internalType": "struct ANNTerms",
          "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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfPrincipalRedemption\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"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\":\"cycleOfPrincipalRedemption\",\"type\":\"tuple\"}],\"internalType\":\"struct ANNTerms\",\"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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"params\":{\"terms\":\"terms of the contract\"},\"returns\":{\"_0\":\"initial state of the contract\"}},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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\":\"ANNEngine\",\"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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"notice\":\"Initialize contract state space based on the contract terms. todo implement annuity calculator\"},\"computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)\":{\"notice\":\"Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps. todo rate reset, scaling, interest calculation base\"},\"computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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 ANN contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@atpar/actus-solidity/contracts/Engines/ANN/ANNEngine.sol\":\"ANNEngine\"},\"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/ANN/ANNEngine.sol\":{\"keccak256\":\"0xaabfa720543df36ed721645894ef8807fe8d746492657000a84677f78ca11c1b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8765fdbe57405d228e587896a763256e6a51aff46e29b74e753d2dd1e12adee1\",\"dweb:/ipfs/QmSdDqnr1oE4T5eHo4uGhctTnCN1rvYNgQKZfU1wYwEHQ7\"]},\"@atpar/actus-solidity/contracts/Engines/ANN/ANNPOF.sol\":{\"keccak256\":\"0x634fdea745612dddaeaef02b207fe9244f2df6e4a596c9f2ad374984c11c8879\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8c87237c7d83fa1ed6109b928618dd4770ac593736c83cfea30d71dc8d8fdd61\",\"dweb:/ipfs/QmVAkG9yexaQ3UQ6uoPUPho6pz5ufBjKgGLrxJw1pe7TVx\"]},\"@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol\":{\"keccak256\":\"0xa6fa7d9a4c8592f75882b524935574fd588883f0edac6b031862d31021562e6a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://02386a4467a8467a236011278233ee73cbe6de19f0d71b468fe6452115d9119f\",\"dweb:/ipfs/Qmabu5NUufPypeGtAPTbYTaTosNkEfpSZWMZfYHkjKQvox\"]},\"@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol\":{\"keccak256\":\"0x2c444213691e110c6ef818015c4e8887fe408462be51dfcb0eeefa1ea8cc8e1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a52d6401a369653b0c480ba33772901ac33e2a5c06ab77c054a18408c5b467b0\",\"dweb:/ipfs/QmXV7tQEo2FeG3st6weByeMrA7zZJZCsBfakNzr7xi4DNv\"]},\"@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": "0x608060405234801561001057600080fd5b5061417b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063aaf5eb68116100ad578063cb2ef6f711610071578063cb2ef6f714610267578063e05a66e01461027c578063e726d6801461028f578063edc0465f1461024c578063f5586e05146102a257610121565b8063aaf5eb6814610211578063acaed9d514610219578063bd6b30821461022c578063c40c5a981461024c578063c8352b791461025457610121565b806330b126d7116100f457806330b126d7146101a25780636f37e55b146101c257806372540003146101ca578063811322fb146101eb5780639485ba4e146101fe57610121565b80630ecadea214610126578063179331f31461014f5780631a2e165d1461016f5780632249a3611461018f575b600080fd5b610139610134366004613506565b6102b5565b6040516101469190613951565b60405180910390f35b61016261015d3660046133a5565b61073f565b60405161014691906139bd565b61018261017d3660046132ba565b61080f565b60405161014691906139a0565b61018261019d36600461348d565b610834565b6101b56101b036600461342a565b610a49565b6040516101469190614001565b610182610b1c565b6101dd6101d83660046132a2565b610b28565b6040516101469291906139cb565b6101826101f93660046133e3565b610b51565b61018261020c366004613446565b610b65565b610182610c3a565b6101b5610227366004613446565b610c3f565b61023f61023a366004613304565b610c6f565b6040516101469190613995565b610182610c7a565b6101396102623660046134d0565b610c7f565b61026f610de9565b60405161014691906139a9565b61018261028a3660046133ff565b610dee565b61018261029d36600461391d565b610e0c565b6101826102b036600461391d565b610f58565b60606102bf613060565b6000600984601c8111156102cf57fe5b14156103dd57610240870135156103dd576102e8613060565b6103236102408901356101e08a013561030a368c90038c016105c08d01613805565b61031a60c08d0160a08e01613389565b60018c8c610fc3565b905060005b60788160ff1610156103da57818160ff166078811061034357fe5b6020020151610351576103da565b886102200135828260ff166078811061036657fe5b602002015111610375576103d2565b610393828260ff166078811061038757fe5b602002015189896111ad565b61039c576103d2565b6103ba6009838360ff16607881106103b057fe5b6020020151610dee565b8484607881106103c657fe5b60200201526001909201915b600101610328565b50505b600a84601c8111156103eb57fe5b14156105055761024087013515801590610409575061022087013515155b801561041e5750866102c00135876102200135105b156105055761042b61307f565b61043e3689900389016105c08a01613805565b60016040820152905061044f613060565b6104786102408a01356102208b01358461046f60c08e0160a08f01613389565b60018d8d610fc3565b905060005b60788160ff16101561050157818160ff166078811061049857fe5b60200201516104a657610501565b6104c4828260ff16607881106104b857fe5b60200201518a8a6111ad565b6104cd576104f9565b6104e1600a838360ff16607881106103b057fe5b8585607881106104ed57fe5b60200201526001909301925b60010161047d565b5050505b600384601c81111561051357fe5b14156105ce576102a0870135156105ce5761052c613060565b61054e6102a08901356101e08a013561030a368c90038c016107408d01613805565b905060005b60788160ff1610156105cb57818160ff166078811061056e57fe5b602002015161057c576105cb565b61058e828260ff166078811061038757fe5b610597576105c3565b6105ab6003838360ff16607881106103b057fe5b8484607881106105b757fe5b60200201526001909201915b600101610553565b50505b600484601c8111156105dc57fe5b14156106b0576102c0870135156106b0576105f5613060565b6106306102c08901356101e08a0135610617368c90038c016107c08d01613805565b61062760c08d0160a08e01613389565b60008c8c610fc3565b905060005b60788160ff1610156106ad57818160ff166078811061065057fe5b602002015161065e576106ad565b610670828260ff166078811061038757fe5b610679576106a5565b61068d6004838360ff16607881106103b057fe5b84846078811061069957fe5b60200201526001909201915b600101610635565b50505b60608167ffffffffffffffff811180156106c957600080fd5b506040519080825280602002602001820160405280156106f3578160200160208202803683370190505b50905060005b828110156107315783816078811061070d57fe5b602002015182828151811061071e57fe5b60209081029190910101526001016106f9565b50925050505b949350505050565b6000600184600181111561074f57fe5b14156107cb5761075e836111dc565b610767846111fe565b1480156107b6575060028260200151600581111561078157fe5b148061079c575060038260200151600581111561079a57fe5b145b806107b657506004826020015160058111156107b457fe5b145b156107c357506001610808565b506000610808565b60008460018111156107d957fe5b14156107e757506000610808565b60405162461bcd60e51b81526004016107ff90613eb8565b60405180910390fd5b9392505050565b60008061081b86610b28565b91505061082a81868686610e0c565b9695505050505050565b6000600982601c81111561084457fe5b14156108c357610240840135156108c357600061088961086d3687900387016105c08801613805565b61087d60c0880160a08901613389565b8761024001358761120d565b90508061089a575060009050610808565b84610220013581116108b0575060009050610808565b6108bb600982610dee565b915050610808565b600a82601c8111156108d157fe5b141561096157610240840135158015906108ef575061022084013515155b15610961576108fc61307f565b61090f3686900386016105c08701613805565b600160408201529050600061093a8261092e60c0890160a08a01613389565b8861024001358861120d565b90508061094d5750600091506108089050565b610958600a82610dee565b92505050610808565b600382601c81111561096f57fe5b14156109d0576102a0840135156109d05760006109b46109983687900387016107408801613805565b6109a860c0880160a08901613389565b876102a001358761120d565b9050806109c5575060009050610808565b6108bb600382610dee565b600482601c8111156109de57fe5b1415610a3f576102c084013515610a3f576000610a23610a073687900387016107c08801613805565b610a1760c0880160a08901613389565b876102c001358761120d565b905080610a34575060009050610808565b6108bb600482610dee565b5060009392505050565b610a516130a8565b610a596130a8565b60008152670de0b6b3a764000061018082018190526101608201526101a083013560208201526101e08301356060808301919091526102e084013590610aad90610aa89086016040870161336a565b611268565b60000b0260e0820152610300830135610140820152610320830135610adb610aa8606086016040870161336a565b60000b026101008201526103c0830135610120820152610460830135610b0a610aa8606086016040870161336a565b60000b026101a082015290505b919050565b670de0b6b3a764000081565b6000808060f884901c601c811115610b3c57fe5b92505067ffffffffffffffff83169050915091565b600081601c811115610b5f57fe5b92915050565b600080610b7a61016087016101408801613287565b6001600160a01b031614158015610bc55750610b9e61016086016101408701613287565b6001600160a01b0316610bb961014087016101208801613287565b6001600160a01b031614155b15610c0957610c0282610bf6610be036899003890189613555565b610bef36899003890189613820565b878761132c565b9063ffffffff61151a16565b9050610737565b610c31610c1b36879003870187613555565b610c2a36879003870187613820565b858561132c565b95945050505050565b601281565b610c476130a8565b610c31610c5936879003870187613555565b610c6836879003870187613820565b85856115b8565b600195945050505050565b607881565b6060610c89613060565b6000610c9b866101c0013586866111ad565b15610cc957610cb06002876101c00135610dee565b828261ffff1660788110610cc057fe5b60200201526001015b61020086013515610d1257610ce486610200013586866111ad565b15610d1257610cf9600f876102000135610dee565b828261ffff1660788110610d0957fe5b60200201526001015b610d22866101e0013586866111ad565b151560011415610d5557610d3c6014876101e00135610dee565b828261ffff1660788110610d4c57fe5b60200201526001015b60608161ffff1667ffffffffffffffff81118015610d7257600080fd5b50604051908082528060200260200182016040528015610d9c578160200160208202803683370190505b50905060005b8261ffff16811015610dde57838160788110610dba57fe5b6020020151828281518110610dcb57fe5b6020908102919091010152600101610da2565b509695505050505050565b600190565b60008160f884601c811115610dff57fe5b60ff16901b179392505050565b600081851415610e1d575083610737565b6001846008811115610e2b57fe5b1480610e4257506003846008811115610e4057fe5b145b15610e5157610c0285846117a9565b6002846008811115610e5f57fe5b1480610e7657506004846008811115610e7457fe5b145b15610eba576000610e8786856117a9565b9050610e9286611805565b610e9b82611805565b1415610ea8579050610737565b610eb2868561181c565b915050610737565b6005846008811115610ec857fe5b1480610edf57506007846008811115610edd57fe5b145b15610eee57610c02858461181c565b6006846008811115610efc57fe5b1480610f1357506008846008811115610f1157fe5b145b15610f4f576000610f24868561181c565b9050610f2f86611805565b610f3882611805565b1415610f45579050610737565b610eb286856117a9565b50929392505050565b60006003846008811115610f6857fe5b1480610f7f57506004846008811115610f7d57fe5b145b80610f9557506007846008811115610f9357fe5b145b80610fab57506008846008811115610fa957fe5b145b15610fb7575083610737565b610c3185858585610e0c565b610fcb613060565b610fd3613060565b606087015160009061103b57610fea8a86866111ad565b156110055789828260788110610ffc57fe5b60200201526001015b6110108986866111ad565b156110335760018615151415611033578882826078811061102d57fe5b60200201525b5090506111a2565b8960008061104a8a848d61073f565b90505b8b8310156110df576110608389896111ad565b1561109e57607684106110855760405162461bcd60e51b81526004016107ff90613a36565b8285856078811061109257fe5b60200201526001909301925b6001918201918160018111156110b057fe5b146110c5576110c08b8e8461186a565b6110d8565b6110d86110d38c8f8561186a565b61199b565b925061104d565b6001891515141561110d576110f58c89896111ad565b1561110d578b85856078811061110757fe5b60200201525b60008411801561112a575061112a85600186036078811061038757fe5b1561119a5760008b60400151600181111561114157fe5b14801561114e5750600184115b801561115a5750828c14155b1561119a5784846078811061116b57fe5b602002015185600186036078811061117f57fe5b602002015284846078811061119057fe5b6020020160008152505b509293505050505b979650505050505050565b6000818311156111bf57506000610808565b8383111580156111cf5750818411155b15610a3f57506001610808565b600080806111ef62015180855b046119ca565b50915091506107378282611a60565b600061073762015180836111e9565b6060840151600090158061121f575081155b1561122b575081610737565b600161123885858861073f565b600181111561124357fe5b14611259576112548583600161186a565b610c31565b610c316110d38684600161186a565b60008082600c81111561127757fe5b141561128557506001610b17565b600182600c81111561129357fe5b14156112a25750600019610b17565b600682600c8111156112b057fe5b14156112be57506001610b17565b600782600c8111156112cc57fe5b14156112db5750600019610b17565b600282600c8111156112e957fe5b14156112f757506001610b17565b600382600c81111561130557fe5b14156113145750600019610b17565b60405162461bcd60e51b81526004016107ff90613c3e565b600080600061133a85610b28565b9092509050601c82601c81111561134d57fe5b141561135e57600092505050610737565b600a82601c81111561136c57fe5b141561137d57600092505050610737565b600c82601c81111561138b57fe5b141561139c57600092505050610737565b600d82601c8111156113aa57fe5b14156113bb57600092505050610737565b601282601c8111156113c957fe5b14156113da57600092505050610737565b600b82601c8111156113e857fe5b14156113f957600092505050610737565b600382601c81111561140757fe5b14156114225761141987878387611ae6565b92505050610737565b600282601c81111561143057fe5b14156114425761141987878387611ba0565b600982601c81111561145057fe5b14156114625761141987878387611bde565b600882601c81111561147057fe5b14156114825761141987878387611c4d565b600482601c81111561149057fe5b14156114a25761141987878387611c6e565b601482601c8111156114b057fe5b14156114c25761141987878387611d1f565b600782601c8111156114d057fe5b14156114e25761141987878387611d3d565b601182601c8111156114f057fe5b14156115025761141987878387611df4565b60405162461bcd60e51b81526004016107ff90613ad2565b6000821580611527575081155b1561153457506000610b5f565b826000191480156115485750600160ff1b82145b156115655760405162461bcd60e51b81526004016107ff90613c92565b8282028284828161157257fe5b05146115905760405162461bcd60e51b81526004016107ff90613c92565b670de0b6b3a76400008105806107375760405162461bcd60e51b81526004016107ff90613bab565b6115c06130a8565b6000806115cc85610b28565b9092509050601c82601c8111156115df57fe5b14156115f15761141987878387611e7e565b600382601c8111156115ff57fe5b14156116115761141987878387611f1d565b600282601c81111561161f57fe5b14156116315761141987878387611f87565b600a82601c81111561163f57fe5b14156116515761141987878387611fce565b600982601c81111561165f57fe5b1415611671576114198787838761204e565b600882601c81111561167f57fe5b14156116915761141987878387611e7e565b600482601c81111561169f57fe5b14156116b157611419878783876120a7565b601482601c8111156116bf57fe5b14156116d1576114198787838761218d565b600782601c8111156116df57fe5b14156116f15761141987878387611e7e565b600c82601c8111156116ff57fe5b14156117115761141987878387612225565b600d82601c81111561171f57fe5b141561173157611419878783876122c1565b601282601c81111561173f57fe5b14156117515761141987878387612447565b601182601c81111561175f57fe5b1415611771576114198787838761254a565b600b82601c81111561177f57fe5b14156117915761141987878387612581565b60405162461bcd60e51b81526004016107ff90613f23565b600060018260018111156117b957fe5b14156117fe576117c88361266c565b600614156117e2576117db83600261267f565b9050610b5f565b6117eb8361266c565b600714156117fe576117db83600161267f565b5090919050565b600061181462015180836111e9565b509392505050565b6000600182600181111561182c57fe5b14156117fe5761183b8361266c565b6006141561184e576117db836001612694565b6118578361266c565b600714156117fe576117db836002612694565b600080808560200151600581111561187e57fe5b1415611899578451610c02908590850263ffffffff61267f16565b6001856020015160058111156118ab57fe5b14156118c9578451610c02908590850260070263ffffffff61267f16565b6002856020015160058111156118db57fe5b14156118f6578451610c02908590850263ffffffff6126a916565b60038560200151600581111561190857fe5b1415611926578451610c02908590850260030263ffffffff6126a916565b60048560200151600581111561193857fe5b1415611956578451610c02908590850260060263ffffffff6126a916565b60058560200151600581111561196857fe5b1415611983578451610c02908590850263ffffffff61272316565b60405162461bcd60e51b81526004016107ff90613a84565b6000806000806119aa8561274a565b9194509250905060006119bd8484611a60565b905061082a848483612768565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611a2157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611a715750816003145b80611a7c5750816005145b80611a875750816007145b80611a925750816008145b80611a9d575081600a145b80611aa8575081600c145b15611ab55750601f610b5f565b81600214611ac55750601e610b5f565b611ace83612782565b611ad957601c611adc565b601d5b60ff169392505050565b6000808561010001516001811115611afa57fe5b1415611b1e57846103a00151611b138660400151611268565b60000b029050610737565b6000611b69611b408660200151886080015189602001518a6101e00151610f58565b611b598689608001518a602001518b6101e00151610f58565b8860600151896101e001516127a7565b905061082a611b8e8660e00151610bf6896103a001518561151a90919063ffffffff16565b6101208701519063ffffffff6128a416565b6000611bbf856104200151866102e001516128a490919063ffffffff16565b611bcc8660400151611268565b6000190260000b029050949350505050565b600080611c01611b408660200151886080015189602001518a6101e00151610f58565b905061082a611c3b611c298760e00151610bf68961014001518661151a90919063ffffffff16565b6101008801519063ffffffff6128a416565b6101608701519063ffffffff61151a16565b60008360e00151611c618660400151611268565b60000b0295945050505050565b600080611c91611b408660200151886080015189602001518a6101e00151610f58565b905061082a611cfa611cb98760e00151610bf68961014001518661151a90919063ffffffff16565b876101000151886101a001510303611cd48960400151611268565b60000b028760e00151611cea8a60400151611268565b60000b029063ffffffff6128ea16565b611d078860400151611268565b60000b8761018001510261151a90919063ffffffff16565b6000610c318460e0015185610180015161151a90919063ffffffff16565b600080611d60611b408660200151886080015189602001518a6101e00151610f58565b905060018660e001516003811115611d7457fe5b1415611d9957856103e00151611d8d8760400151611268565b60000b02915050610737565b60028660e001516003811115611dab57fe5b1415611dde57611dd18560e00151610bf6886103e001518461151a90919063ffffffff16565b611d8d8760400151611268565b60e0850151611dd190829063ffffffff61151a16565b600080611e17611b408660200151886080015189602001518a6101e00151610f58565b9050611e63611e3c8660e00151610bf68861014001518561151a90919063ffffffff16565b610100870151610440890151611e579163ffffffff6128a416565b9063ffffffff6128a416565b611e708760400151611268565b60000b029695505050505050565b611e866130a8565b6000611ea8611b408660200151886080015189602001518a6101e00151610f58565b9050611edf611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b6101008701519063ffffffff6128a416565b61010086015260e08501516103a0870151611f0a91611b8e918491610bf6919063ffffffff61151a16565b6101208601525050506020820152919050565b611f256130a8565b6000611f47611b408660200151886080015189602001518a6101e00151610f58565b9050611f6c611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015250506000610120840152506020820152919050565b611f8f6130a8565b846102e00151611fa28660400151611268565b60000b0260e0850152505061030083015161014083015260208201526103209091015161010082015290565b611fd66130a8565b6000611ff8611b408660200151886080015189602001518a6101e00151610f58565b9050612020611ecd611c2983610bf68960e001518a610140015161151a90919063ffffffff16565b50600061010086015260e08501516103a0870151611f0a91611b8e918491610bf6919063ffffffff61151a16565b6120566130a8565b6000612078611b408660200151886080015189602001518a6101e00151610f58565b600061010087015260e08601516103a0880151919250611f0a91611b8e918491610bf69163ffffffff61151a16565b6120af6130a8565b60006120d1611b408660200151886080015189602001518a6101e00151610f58565b90506120f6611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161212191611b8e918491610bf6919063ffffffff61151a16565b6101208601526101008501516101a086015161217b916121579161214a9163ffffffff6128fa16565b611cd48960400151611268565b6121648860400151611268565b60000b028660e001516128fa90919063ffffffff16565b60e08601525050506020820152919050565b6121956130a8565b60006121b7611b408660200151886080015189602001518a6101e00151610f58565b90506121dc611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161220791611b8e918491610bf6919063ffffffff61151a16565b6101208601525050600060e084015250600482526020820152919050565b61222d6130a8565b600061224f611b408660200151886080015189602001518a6101e00151610f58565b9050612274611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161229f91611b8e918491610bf6919063ffffffff61151a16565b6101208601525050506103809290920151610140820152602081019190915290565b6122c96130a8565b610360850151610340860151610140860151908402909101906000906122f690839063ffffffff6128fa16565b9050808761048001511280156123195750866104e0015160001902876104800151125b1561232a5750610480860151612346565b866104e001516000190281121561234657506104e08601516000035b61014086015161235c908263ffffffff6128a416565b91508187610480015112801561237b5750866104a00151876104800151125b1561238d5786610480015191506123a3565b866104a001518212156123a357866104a0015191505b60006123ee6123c588602001518a608001518b602001518c6101e00151610f58565b6123de888b608001518c602001518d6101e00151610f58565b8a606001518b6101e001516127a7565b905061242561241382610bf68a60e001518b610140015161151a90919063ffffffff16565b6101008901519063ffffffff6128a416565b6101008801525050610140850152505060006101a08301526020820152919050565b61244f6130a8565b6000612471611b408660200151886080015189602001518a6101e00151610f58565b9050612496611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a08701516124c191611b8e918491610bf6919063ffffffff61151a16565b61012086015260018660c0015160038111156124d957fe5b14806124f4575060038660c0015160038111156124f257fe5b145b156125025760006101608601525b60028660c00151600381111561251457fe5b148061252f575060038660c00151600381111561252d57fe5b145b1561253d5760006101808601525b5050506020820152919050565b6125526130a8565b5050600060e0830181905261014083018190526101008301819052610120830152600582526020820152919050565b6125896130a8565b600084604001516000146125a15784604001516125ba565b6125ba8487608001518860200151896101e00151610e0c565b610500870151604001519091508390600090156125f55760006125e289610500015185612940565b90508083116125f357600180895291505b505b876105200151604001518015612609575080155b1561263857600061261f89610520015185612940565b90508083116126315760028852612636565b600388525b505b60408701516126605761265a8689608001518a602001518b6101e00151610e0c565b60408801525b50949695505050505050565b6007620151809091046003010660010190565b620151808102820182811015610b5f57600080fd5b620151808102820382811115610b5f57600080fd5b60008080806126bb62015180876111e9565b600c9188016000198101838104949094019650945092509006600101915060006126e58484611a60565b9050808211156126f3578091505b62015180870662015180612708868686612a6c565b020194508685101561271957600080fd5b5050505092915050565b600080808061273562015180876111e9565b91870194509250905060006126e58484611a60565b6000808061275b62015180856111e9565b9196909550909350915050565b600062015180612779858585612a6c565b02949350505050565b60006004820615801561279757506064820615155b80610b5f57505061019090061590565b6000848410156127c95760405162461bcd60e51b81526004016107ff90613d87565b60008360058111156127d757fe5b14156127e757610c028585612ae8565b60018360058111156127f557fe5b141561280557610c028585612bfc565b600283600581111561281357fe5b141561282357610c028585612c27565b600483600581111561283157fe5b141561284157610c028585612c46565b600383600581111561284f57fe5b141561286057610c02858584612d07565b600583600581111561286e57fe5b141561288c5760405162461bcd60e51b81526004016107ff90613cd9565b60405162461bcd60e51b81526004016107ff90613b1f565b60008282018183128015906128b95750838112155b806128ce57506000831280156128ce57508381125b6108085760405162461bcd60e51b81526004016107ff90613bfd565b6000818313156117fe5750919050565b600081830381831280159061290f5750838113155b80612924575060008312801561292457508381135b6108085760405162461bcd60e51b81526004016107ff90613f79565b600080808460200151600581111561295457fe5b141561297457835161296d90849063ffffffff61267f16565b9050610808565b60018460200151600581111561298657fe5b14156129a257835161296d90849060070263ffffffff61267f16565b6002846020015160058111156129b457fe5b14156129cd57835161296d90849063ffffffff6126a916565b6003846020015160058111156129df57fe5b14156129fb57835161296d90849060030263ffffffff6126a916565b600484602001516005811115612a0d57fe5b1415612a2957835161296d90849060060263ffffffff6126a916565b600584602001516005811115612a3b57fe5b1415612a5457835161296d90849063ffffffff61272316565b60405162461bcd60e51b81526004016107ff90613e5b565b60006107b2841015612a7d57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281612ab957fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b600080612af484612ddd565b90506000612b0184612ddd565b90506000612b0e86612df5565b612b1a5761016d612b1e565b61016e5b61ffff16905081831415612b5057612b4681612b3a8888612e12565b9063ffffffff612e2d16565b9350505050610b5f565b6000612b5b86612df5565b612b675761016d612b6b565b61016e5b61ffff1690506000612b9c83612b3a8a612b97612b8f8a600163ffffffff612ee916565b600180612768565b612e12565b90506000612bb983612b3a612bb388600180612768565b8b612e12565b9050612bef612bdf6001612bd3888a63ffffffff612f0e16565b9063ffffffff612f0e16565b611e57848463ffffffff6128a416565b9998505050505050505050565b6000610808610168612b3a62015180612c1b868863ffffffff612f0e16565b9063ffffffff612f5016565b600061080861016d612b3a62015180612c1b868863ffffffff612f0e16565b6000806000806000806000612c5a8961274a565b975095509350612c698861274a565b945092509050601f861415612c7d57601e95505b82601f1415612c8b57601e92505b6000612c9d848863ffffffff6128fa16565b90506000612cb1848863ffffffff6128fa16565b90506000612cc5848863ffffffff6128fa16565b9050612cf7610168612b3a85611e57612ce587601e63ffffffff612f9216565b611e578761016863ffffffff612f9216565b9c9b505050505050505050505050565b6000806000806000806000612d1b8a61274a565b975095509350612d2a8961274a565b945092509050612d398a6111dc565b861415612d4557601e95505b8789148015612d545750816002145b158015612d685750612d65896111dc565b83145b15612d7257601e92505b6000612d84848863ffffffff6128fa16565b90506000612d98848863ffffffff6128fa16565b90506000612dac848863ffffffff6128fa16565b9050612dcc610168612b3a85611e57612ce587601e63ffffffff612f9216565b9d9c50505050505050505050505050565b6000612dec62015180836111e9565b50909392505050565b600080612e0562015180846111e9565b5050905061080881612782565b600081831115612e2157600080fd5b50620151809190030490565b600081612e4c5760405162461bcd60e51b81526004016107ff90613fbd565b82612e5957506000610b5f565b670de0b6b3a764000083810290848281612e6f57fe5b0514612e8d5760405162461bcd60e51b81526004016107ff90613e15565b82600019148015612ea15750600160ff1b84145b15612ebe5760405162461bcd60e51b81526004016107ff90613e15565b6000838281612ec957fe5b059050806107375760405162461bcd60e51b81526004016107ff90613d36565b6000828201838110156108085760405162461bcd60e51b81526004016107ff90613b74565b600061080883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ffd565b600061080883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613029565b600082612fa157506000610b5f565b82600019148015612fb55750600160ff1b82145b15612fd25760405162461bcd60e51b81526004016107ff90613dce565b82820282848281612fdf57fe5b05146108085760405162461bcd60e51b81526004016107ff90613dce565b600081848411156130215760405162461bcd60e51b81526004016107ff91906139e3565b505050900390565b6000818361304a5760405162461bcd60e51b81526004016107ff91906139e3565b50600083858161305657fe5b0495945050505050565b60405180610f0001604052806078906020820280368337509192915050565b604080516080810190915260008082526020820190815260200160008152600060209091015290565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610b5f57600080fd5b803560098110610b5f57600080fd5b8035610b5f8161411e565b8035610b5f8161412b565b8035600d8110610b5f57600080fd5b803560138110610b5f57600080fd5b803560048110610b5f57600080fd5b600061084082840312156131bd578081fd5b50919050565b6000608082840312156131d4578081fd5b6131de60806140e6565b90508135815260208201356131f28161412b565b602082015260408201356132058161411e565b604082015260608201356132188161410d565b606082015292915050565b600060608284031215613234578081fd5b61323e60606140e6565b90508135815260208201356132528161412b565b60208201526040820135801515811461326a57600080fd5b604082015292915050565b600061028082840312156131bd578081fd5b600060208284031215613298578081fd5b6108088383613142565b6000602082840312156132b3578081fd5b5035919050565b600080600080608085870312156132cf578283fd5b843593506020850135600981106132e4578384fd5b925060408501356132f48161411e565b9396929550929360600135925050565b6000806000806000610d80868803121561331c578283fd5b8535945061332d87602088016131ab565b935061333d876108608801613275565b9250610ae086013561334e8161410d565b915061335e87610b008801613275565b90509295509295909350565b60006020828403121561337b578081fd5b8135600d8110610808578182fd5b60006020828403121561339a578081fd5b81356108088161411e565b600080600060c084860312156133b9578081fd5b83356133c48161411e565b9250602084013591506133da85604086016131c3565b90509250925092565b6000602082840312156133f4578081fd5b813561080881614138565b60008060408385031215613411578182fd5b823561341c81614138565b946020939093013593505050565b6000610840828403121561343c578081fd5b61080883836131ab565b600080600080610b00858703121561345c578182fd5b61346686866131ab565b9350613476866108408701613275565b9396939550505050610ac082013591610ae0013590565b600080600061088084860312156134a2578081fd5b6134ac85856131ab565b925061084084013591506108608401356134c581614138565b809150509250925092565b600080600061088084860312156134e5578081fd5b6134ef85856131ab565b956108408501359550610860909401359392505050565b6000806000806108a0858703121561351c578182fd5b61352686866131ab565b935061084085013592506108608501359150610880850135601d811061354a578182fd5b939692955090935050565b60006108408284031215613567578081fd5b6135726105e06140e6565b61357c848461318d565b815261358b8460208501613168565b602082015261359d846040850161317e565b60408201526135af8460608501613173565b60608201526135c18460808501613159565b60808201526135d38460a08501613168565b60a08201526135e58460c0850161319c565b60c08201526135f78460e0850161319c565b60e082015261010061360b85828601613168565b9082015261012061361e85858301613142565b9082015261014061363185858301613142565b90820152610160838101359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200808401359082015261022080840135908201526102408084013590820152610260808401359082015261028080840135908201526102a080840135908201526102c080840135908201526102e08084013590820152610300808401359082015261032080840135908201526103408084013590820152610360808401359082015261038080840135908201526103a080840135908201526103c080840135908201526103e08084013590820152610400808401359082015261042080840135908201526104408084013590820152610460808401359082015261048080840135908201526104a080840135908201526104c080840135908201526104e0808401359082015261050061378385828601613223565b9082015261056061379685858301613223565b6105208301526105c06137ab868287016131c3565b6105408401526137bf8661064087016131c3565b828401526137d1866106c087016131c3565b6105808401526137e58661074087016131c3565b6105a08401526137f9866107c087016131c3565b90830152509392505050565b600060808284031215613816578081fd5b61080883836131c3565b6000610280808385031215613833578182fd5b61383c816140e6565b6138468585613173565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60008060008060808587031215613932578182fd5b843593506132e48660208701613159565b6006811061394d57fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156139895783518352928401929184019160010161396d565b50909695505050505050565b901515815260200190565b90815260200190565b60208101601383106139b757fe5b91905290565b60208101600283106139b757fe5b60408101601d84106139d957fe5b9281526020015290565b6000602080835283518082850152825b81811015613a0f578581018301518582016040015282016139f3565b81811115613a205783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b6020808252602d908201527f414e4e456e67696e652e7061796f666646756e6374696f6e3a2041545452494260408201526c15551157d393d517d193d55391609a1b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526036908201527f414e4e456e67696e652e73746174655472616e736974696f6e46756e6374696f6040820152751b8e8810551514925095551157d393d517d193d5539160521b606082015260800190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b600061028082019050614015828451613943565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561410557600080fd5b604052919050565b801515811461411b57600080fd5b50565b6002811061411b57600080fd5b6006811061411b57600080fd5b601d811061411b57600080fdfea2646970667358221220ce35e31203c8582c2be7a88ba589e6130dc609a274a5b8f4b9137736f240807264736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063aaf5eb68116100ad578063cb2ef6f711610071578063cb2ef6f714610267578063e05a66e01461027c578063e726d6801461028f578063edc0465f1461024c578063f5586e05146102a257610121565b8063aaf5eb6814610211578063acaed9d514610219578063bd6b30821461022c578063c40c5a981461024c578063c8352b791461025457610121565b806330b126d7116100f457806330b126d7146101a25780636f37e55b146101c257806372540003146101ca578063811322fb146101eb5780639485ba4e146101fe57610121565b80630ecadea214610126578063179331f31461014f5780631a2e165d1461016f5780632249a3611461018f575b600080fd5b610139610134366004613506565b6102b5565b6040516101469190613951565b60405180910390f35b61016261015d3660046133a5565b61073f565b60405161014691906139bd565b61018261017d3660046132ba565b61080f565b60405161014691906139a0565b61018261019d36600461348d565b610834565b6101b56101b036600461342a565b610a49565b6040516101469190614001565b610182610b1c565b6101dd6101d83660046132a2565b610b28565b6040516101469291906139cb565b6101826101f93660046133e3565b610b51565b61018261020c366004613446565b610b65565b610182610c3a565b6101b5610227366004613446565b610c3f565b61023f61023a366004613304565b610c6f565b6040516101469190613995565b610182610c7a565b6101396102623660046134d0565b610c7f565b61026f610de9565b60405161014691906139a9565b61018261028a3660046133ff565b610dee565b61018261029d36600461391d565b610e0c565b6101826102b036600461391d565b610f58565b60606102bf613060565b6000600984601c8111156102cf57fe5b14156103dd57610240870135156103dd576102e8613060565b6103236102408901356101e08a013561030a368c90038c016105c08d01613805565b61031a60c08d0160a08e01613389565b60018c8c610fc3565b905060005b60788160ff1610156103da57818160ff166078811061034357fe5b6020020151610351576103da565b886102200135828260ff166078811061036657fe5b602002015111610375576103d2565b610393828260ff166078811061038757fe5b602002015189896111ad565b61039c576103d2565b6103ba6009838360ff16607881106103b057fe5b6020020151610dee565b8484607881106103c657fe5b60200201526001909201915b600101610328565b50505b600a84601c8111156103eb57fe5b14156105055761024087013515801590610409575061022087013515155b801561041e5750866102c00135876102200135105b156105055761042b61307f565b61043e3689900389016105c08a01613805565b60016040820152905061044f613060565b6104786102408a01356102208b01358461046f60c08e0160a08f01613389565b60018d8d610fc3565b905060005b60788160ff16101561050157818160ff166078811061049857fe5b60200201516104a657610501565b6104c4828260ff16607881106104b857fe5b60200201518a8a6111ad565b6104cd576104f9565b6104e1600a838360ff16607881106103b057fe5b8585607881106104ed57fe5b60200201526001909301925b60010161047d565b5050505b600384601c81111561051357fe5b14156105ce576102a0870135156105ce5761052c613060565b61054e6102a08901356101e08a013561030a368c90038c016107408d01613805565b905060005b60788160ff1610156105cb57818160ff166078811061056e57fe5b602002015161057c576105cb565b61058e828260ff166078811061038757fe5b610597576105c3565b6105ab6003838360ff16607881106103b057fe5b8484607881106105b757fe5b60200201526001909201915b600101610553565b50505b600484601c8111156105dc57fe5b14156106b0576102c0870135156106b0576105f5613060565b6106306102c08901356101e08a0135610617368c90038c016107c08d01613805565b61062760c08d0160a08e01613389565b60008c8c610fc3565b905060005b60788160ff1610156106ad57818160ff166078811061065057fe5b602002015161065e576106ad565b610670828260ff166078811061038757fe5b610679576106a5565b61068d6004838360ff16607881106103b057fe5b84846078811061069957fe5b60200201526001909201915b600101610635565b50505b60608167ffffffffffffffff811180156106c957600080fd5b506040519080825280602002602001820160405280156106f3578160200160208202803683370190505b50905060005b828110156107315783816078811061070d57fe5b602002015182828151811061071e57fe5b60209081029190910101526001016106f9565b50925050505b949350505050565b6000600184600181111561074f57fe5b14156107cb5761075e836111dc565b610767846111fe565b1480156107b6575060028260200151600581111561078157fe5b148061079c575060038260200151600581111561079a57fe5b145b806107b657506004826020015160058111156107b457fe5b145b156107c357506001610808565b506000610808565b60008460018111156107d957fe5b14156107e757506000610808565b60405162461bcd60e51b81526004016107ff90613eb8565b60405180910390fd5b9392505050565b60008061081b86610b28565b91505061082a81868686610e0c565b9695505050505050565b6000600982601c81111561084457fe5b14156108c357610240840135156108c357600061088961086d3687900387016105c08801613805565b61087d60c0880160a08901613389565b8761024001358761120d565b90508061089a575060009050610808565b84610220013581116108b0575060009050610808565b6108bb600982610dee565b915050610808565b600a82601c8111156108d157fe5b141561096157610240840135158015906108ef575061022084013515155b15610961576108fc61307f565b61090f3686900386016105c08701613805565b600160408201529050600061093a8261092e60c0890160a08a01613389565b8861024001358861120d565b90508061094d5750600091506108089050565b610958600a82610dee565b92505050610808565b600382601c81111561096f57fe5b14156109d0576102a0840135156109d05760006109b46109983687900387016107408801613805565b6109a860c0880160a08901613389565b876102a001358761120d565b9050806109c5575060009050610808565b6108bb600382610dee565b600482601c8111156109de57fe5b1415610a3f576102c084013515610a3f576000610a23610a073687900387016107c08801613805565b610a1760c0880160a08901613389565b876102c001358761120d565b905080610a34575060009050610808565b6108bb600482610dee565b5060009392505050565b610a516130a8565b610a596130a8565b60008152670de0b6b3a764000061018082018190526101608201526101a083013560208201526101e08301356060808301919091526102e084013590610aad90610aa89086016040870161336a565b611268565b60000b0260e0820152610300830135610140820152610320830135610adb610aa8606086016040870161336a565b60000b026101008201526103c0830135610120820152610460830135610b0a610aa8606086016040870161336a565b60000b026101a082015290505b919050565b670de0b6b3a764000081565b6000808060f884901c601c811115610b3c57fe5b92505067ffffffffffffffff83169050915091565b600081601c811115610b5f57fe5b92915050565b600080610b7a61016087016101408801613287565b6001600160a01b031614158015610bc55750610b9e61016086016101408701613287565b6001600160a01b0316610bb961014087016101208801613287565b6001600160a01b031614155b15610c0957610c0282610bf6610be036899003890189613555565b610bef36899003890189613820565b878761132c565b9063ffffffff61151a16565b9050610737565b610c31610c1b36879003870187613555565b610c2a36879003870187613820565b858561132c565b95945050505050565b601281565b610c476130a8565b610c31610c5936879003870187613555565b610c6836879003870187613820565b85856115b8565b600195945050505050565b607881565b6060610c89613060565b6000610c9b866101c0013586866111ad565b15610cc957610cb06002876101c00135610dee565b828261ffff1660788110610cc057fe5b60200201526001015b61020086013515610d1257610ce486610200013586866111ad565b15610d1257610cf9600f876102000135610dee565b828261ffff1660788110610d0957fe5b60200201526001015b610d22866101e0013586866111ad565b151560011415610d5557610d3c6014876101e00135610dee565b828261ffff1660788110610d4c57fe5b60200201526001015b60608161ffff1667ffffffffffffffff81118015610d7257600080fd5b50604051908082528060200260200182016040528015610d9c578160200160208202803683370190505b50905060005b8261ffff16811015610dde57838160788110610dba57fe5b6020020151828281518110610dcb57fe5b6020908102919091010152600101610da2565b509695505050505050565b600190565b60008160f884601c811115610dff57fe5b60ff16901b179392505050565b600081851415610e1d575083610737565b6001846008811115610e2b57fe5b1480610e4257506003846008811115610e4057fe5b145b15610e5157610c0285846117a9565b6002846008811115610e5f57fe5b1480610e7657506004846008811115610e7457fe5b145b15610eba576000610e8786856117a9565b9050610e9286611805565b610e9b82611805565b1415610ea8579050610737565b610eb2868561181c565b915050610737565b6005846008811115610ec857fe5b1480610edf57506007846008811115610edd57fe5b145b15610eee57610c02858461181c565b6006846008811115610efc57fe5b1480610f1357506008846008811115610f1157fe5b145b15610f4f576000610f24868561181c565b9050610f2f86611805565b610f3882611805565b1415610f45579050610737565b610eb286856117a9565b50929392505050565b60006003846008811115610f6857fe5b1480610f7f57506004846008811115610f7d57fe5b145b80610f9557506007846008811115610f9357fe5b145b80610fab57506008846008811115610fa957fe5b145b15610fb7575083610737565b610c3185858585610e0c565b610fcb613060565b610fd3613060565b606087015160009061103b57610fea8a86866111ad565b156110055789828260788110610ffc57fe5b60200201526001015b6110108986866111ad565b156110335760018615151415611033578882826078811061102d57fe5b60200201525b5090506111a2565b8960008061104a8a848d61073f565b90505b8b8310156110df576110608389896111ad565b1561109e57607684106110855760405162461bcd60e51b81526004016107ff90613a36565b8285856078811061109257fe5b60200201526001909301925b6001918201918160018111156110b057fe5b146110c5576110c08b8e8461186a565b6110d8565b6110d86110d38c8f8561186a565b61199b565b925061104d565b6001891515141561110d576110f58c89896111ad565b1561110d578b85856078811061110757fe5b60200201525b60008411801561112a575061112a85600186036078811061038757fe5b1561119a5760008b60400151600181111561114157fe5b14801561114e5750600184115b801561115a5750828c14155b1561119a5784846078811061116b57fe5b602002015185600186036078811061117f57fe5b602002015284846078811061119057fe5b6020020160008152505b509293505050505b979650505050505050565b6000818311156111bf57506000610808565b8383111580156111cf5750818411155b15610a3f57506001610808565b600080806111ef62015180855b046119ca565b50915091506107378282611a60565b600061073762015180836111e9565b6060840151600090158061121f575081155b1561122b575081610737565b600161123885858861073f565b600181111561124357fe5b14611259576112548583600161186a565b610c31565b610c316110d38684600161186a565b60008082600c81111561127757fe5b141561128557506001610b17565b600182600c81111561129357fe5b14156112a25750600019610b17565b600682600c8111156112b057fe5b14156112be57506001610b17565b600782600c8111156112cc57fe5b14156112db5750600019610b17565b600282600c8111156112e957fe5b14156112f757506001610b17565b600382600c81111561130557fe5b14156113145750600019610b17565b60405162461bcd60e51b81526004016107ff90613c3e565b600080600061133a85610b28565b9092509050601c82601c81111561134d57fe5b141561135e57600092505050610737565b600a82601c81111561136c57fe5b141561137d57600092505050610737565b600c82601c81111561138b57fe5b141561139c57600092505050610737565b600d82601c8111156113aa57fe5b14156113bb57600092505050610737565b601282601c8111156113c957fe5b14156113da57600092505050610737565b600b82601c8111156113e857fe5b14156113f957600092505050610737565b600382601c81111561140757fe5b14156114225761141987878387611ae6565b92505050610737565b600282601c81111561143057fe5b14156114425761141987878387611ba0565b600982601c81111561145057fe5b14156114625761141987878387611bde565b600882601c81111561147057fe5b14156114825761141987878387611c4d565b600482601c81111561149057fe5b14156114a25761141987878387611c6e565b601482601c8111156114b057fe5b14156114c25761141987878387611d1f565b600782601c8111156114d057fe5b14156114e25761141987878387611d3d565b601182601c8111156114f057fe5b14156115025761141987878387611df4565b60405162461bcd60e51b81526004016107ff90613ad2565b6000821580611527575081155b1561153457506000610b5f565b826000191480156115485750600160ff1b82145b156115655760405162461bcd60e51b81526004016107ff90613c92565b8282028284828161157257fe5b05146115905760405162461bcd60e51b81526004016107ff90613c92565b670de0b6b3a76400008105806107375760405162461bcd60e51b81526004016107ff90613bab565b6115c06130a8565b6000806115cc85610b28565b9092509050601c82601c8111156115df57fe5b14156115f15761141987878387611e7e565b600382601c8111156115ff57fe5b14156116115761141987878387611f1d565b600282601c81111561161f57fe5b14156116315761141987878387611f87565b600a82601c81111561163f57fe5b14156116515761141987878387611fce565b600982601c81111561165f57fe5b1415611671576114198787838761204e565b600882601c81111561167f57fe5b14156116915761141987878387611e7e565b600482601c81111561169f57fe5b14156116b157611419878783876120a7565b601482601c8111156116bf57fe5b14156116d1576114198787838761218d565b600782601c8111156116df57fe5b14156116f15761141987878387611e7e565b600c82601c8111156116ff57fe5b14156117115761141987878387612225565b600d82601c81111561171f57fe5b141561173157611419878783876122c1565b601282601c81111561173f57fe5b14156117515761141987878387612447565b601182601c81111561175f57fe5b1415611771576114198787838761254a565b600b82601c81111561177f57fe5b14156117915761141987878387612581565b60405162461bcd60e51b81526004016107ff90613f23565b600060018260018111156117b957fe5b14156117fe576117c88361266c565b600614156117e2576117db83600261267f565b9050610b5f565b6117eb8361266c565b600714156117fe576117db83600161267f565b5090919050565b600061181462015180836111e9565b509392505050565b6000600182600181111561182c57fe5b14156117fe5761183b8361266c565b6006141561184e576117db836001612694565b6118578361266c565b600714156117fe576117db836002612694565b600080808560200151600581111561187e57fe5b1415611899578451610c02908590850263ffffffff61267f16565b6001856020015160058111156118ab57fe5b14156118c9578451610c02908590850260070263ffffffff61267f16565b6002856020015160058111156118db57fe5b14156118f6578451610c02908590850263ffffffff6126a916565b60038560200151600581111561190857fe5b1415611926578451610c02908590850260030263ffffffff6126a916565b60048560200151600581111561193857fe5b1415611956578451610c02908590850260060263ffffffff6126a916565b60058560200151600581111561196857fe5b1415611983578451610c02908590850263ffffffff61272316565b60405162461bcd60e51b81526004016107ff90613a84565b6000806000806119aa8561274a565b9194509250905060006119bd8484611a60565b905061082a848483612768565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611a2157fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611a715750816003145b80611a7c5750816005145b80611a875750816007145b80611a925750816008145b80611a9d575081600a145b80611aa8575081600c145b15611ab55750601f610b5f565b81600214611ac55750601e610b5f565b611ace83612782565b611ad957601c611adc565b601d5b60ff169392505050565b6000808561010001516001811115611afa57fe5b1415611b1e57846103a00151611b138660400151611268565b60000b029050610737565b6000611b69611b408660200151886080015189602001518a6101e00151610f58565b611b598689608001518a602001518b6101e00151610f58565b8860600151896101e001516127a7565b905061082a611b8e8660e00151610bf6896103a001518561151a90919063ffffffff16565b6101208701519063ffffffff6128a416565b6000611bbf856104200151866102e001516128a490919063ffffffff16565b611bcc8660400151611268565b6000190260000b029050949350505050565b600080611c01611b408660200151886080015189602001518a6101e00151610f58565b905061082a611c3b611c298760e00151610bf68961014001518661151a90919063ffffffff16565b6101008801519063ffffffff6128a416565b6101608701519063ffffffff61151a16565b60008360e00151611c618660400151611268565b60000b0295945050505050565b600080611c91611b408660200151886080015189602001518a6101e00151610f58565b905061082a611cfa611cb98760e00151610bf68961014001518661151a90919063ffffffff16565b876101000151886101a001510303611cd48960400151611268565b60000b028760e00151611cea8a60400151611268565b60000b029063ffffffff6128ea16565b611d078860400151611268565b60000b8761018001510261151a90919063ffffffff16565b6000610c318460e0015185610180015161151a90919063ffffffff16565b600080611d60611b408660200151886080015189602001518a6101e00151610f58565b905060018660e001516003811115611d7457fe5b1415611d9957856103e00151611d8d8760400151611268565b60000b02915050610737565b60028660e001516003811115611dab57fe5b1415611dde57611dd18560e00151610bf6886103e001518461151a90919063ffffffff16565b611d8d8760400151611268565b60e0850151611dd190829063ffffffff61151a16565b600080611e17611b408660200151886080015189602001518a6101e00151610f58565b9050611e63611e3c8660e00151610bf68861014001518561151a90919063ffffffff16565b610100870151610440890151611e579163ffffffff6128a416565b9063ffffffff6128a416565b611e708760400151611268565b60000b029695505050505050565b611e866130a8565b6000611ea8611b408660200151886080015189602001518a6101e00151610f58565b9050611edf611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b6101008701519063ffffffff6128a416565b61010086015260e08501516103a0870151611f0a91611b8e918491610bf6919063ffffffff61151a16565b6101208601525050506020820152919050565b611f256130a8565b6000611f47611b408660200151886080015189602001518a6101e00151610f58565b9050611f6c611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015250506000610120840152506020820152919050565b611f8f6130a8565b846102e00151611fa28660400151611268565b60000b0260e0850152505061030083015161014083015260208201526103209091015161010082015290565b611fd66130a8565b6000611ff8611b408660200151886080015189602001518a6101e00151610f58565b9050612020611ecd611c2983610bf68960e001518a610140015161151a90919063ffffffff16565b50600061010086015260e08501516103a0870151611f0a91611b8e918491610bf6919063ffffffff61151a16565b6120566130a8565b6000612078611b408660200151886080015189602001518a6101e00151610f58565b600061010087015260e08601516103a0880151919250611f0a91611b8e918491610bf69163ffffffff61151a16565b6120af6130a8565b60006120d1611b408660200151886080015189602001518a6101e00151610f58565b90506120f6611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161212191611b8e918491610bf6919063ffffffff61151a16565b6101208601526101008501516101a086015161217b916121579161214a9163ffffffff6128fa16565b611cd48960400151611268565b6121648860400151611268565b60000b028660e001516128fa90919063ffffffff16565b60e08601525050506020820152919050565b6121956130a8565b60006121b7611b408660200151886080015189602001518a6101e00151610f58565b90506121dc611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161220791611b8e918491610bf6919063ffffffff61151a16565b6101208601525050600060e084015250600482526020820152919050565b61222d6130a8565b600061224f611b408660200151886080015189602001518a6101e00151610f58565b9050612274611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a087015161229f91611b8e918491610bf6919063ffffffff61151a16565b6101208601525050506103809290920151610140820152602081019190915290565b6122c96130a8565b610360850151610340860151610140860151908402909101906000906122f690839063ffffffff6128fa16565b9050808761048001511280156123195750866104e0015160001902876104800151125b1561232a5750610480860151612346565b866104e001516000190281121561234657506104e08601516000035b61014086015161235c908263ffffffff6128a416565b91508187610480015112801561237b5750866104a00151876104800151125b1561238d5786610480015191506123a3565b866104a001518212156123a357866104a0015191505b60006123ee6123c588602001518a608001518b602001518c6101e00151610f58565b6123de888b608001518c602001518d6101e00151610f58565b8a606001518b6101e001516127a7565b905061242561241382610bf68a60e001518b610140015161151a90919063ffffffff16565b6101008901519063ffffffff6128a416565b6101008801525050610140850152505060006101a08301526020820152919050565b61244f6130a8565b6000612471611b408660200151886080015189602001518a6101e00151610f58565b9050612496611ecd82610bf68860e0015189610140015161151a90919063ffffffff16565b61010086015260e08501516103a08701516124c191611b8e918491610bf6919063ffffffff61151a16565b61012086015260018660c0015160038111156124d957fe5b14806124f4575060038660c0015160038111156124f257fe5b145b156125025760006101608601525b60028660c00151600381111561251457fe5b148061252f575060038660c00151600381111561252d57fe5b145b1561253d5760006101808601525b5050506020820152919050565b6125526130a8565b5050600060e0830181905261014083018190526101008301819052610120830152600582526020820152919050565b6125896130a8565b600084604001516000146125a15784604001516125ba565b6125ba8487608001518860200151896101e00151610e0c565b610500870151604001519091508390600090156125f55760006125e289610500015185612940565b90508083116125f357600180895291505b505b876105200151604001518015612609575080155b1561263857600061261f89610520015185612940565b90508083116126315760028852612636565b600388525b505b60408701516126605761265a8689608001518a602001518b6101e00151610e0c565b60408801525b50949695505050505050565b6007620151809091046003010660010190565b620151808102820182811015610b5f57600080fd5b620151808102820382811115610b5f57600080fd5b60008080806126bb62015180876111e9565b600c9188016000198101838104949094019650945092509006600101915060006126e58484611a60565b9050808211156126f3578091505b62015180870662015180612708868686612a6c565b020194508685101561271957600080fd5b5050505092915050565b600080808061273562015180876111e9565b91870194509250905060006126e58484611a60565b6000808061275b62015180856111e9565b9196909550909350915050565b600062015180612779858585612a6c565b02949350505050565b60006004820615801561279757506064820615155b80610b5f57505061019090061590565b6000848410156127c95760405162461bcd60e51b81526004016107ff90613d87565b60008360058111156127d757fe5b14156127e757610c028585612ae8565b60018360058111156127f557fe5b141561280557610c028585612bfc565b600283600581111561281357fe5b141561282357610c028585612c27565b600483600581111561283157fe5b141561284157610c028585612c46565b600383600581111561284f57fe5b141561286057610c02858584612d07565b600583600581111561286e57fe5b141561288c5760405162461bcd60e51b81526004016107ff90613cd9565b60405162461bcd60e51b81526004016107ff90613b1f565b60008282018183128015906128b95750838112155b806128ce57506000831280156128ce57508381125b6108085760405162461bcd60e51b81526004016107ff90613bfd565b6000818313156117fe5750919050565b600081830381831280159061290f5750838113155b80612924575060008312801561292457508381135b6108085760405162461bcd60e51b81526004016107ff90613f79565b600080808460200151600581111561295457fe5b141561297457835161296d90849063ffffffff61267f16565b9050610808565b60018460200151600581111561298657fe5b14156129a257835161296d90849060070263ffffffff61267f16565b6002846020015160058111156129b457fe5b14156129cd57835161296d90849063ffffffff6126a916565b6003846020015160058111156129df57fe5b14156129fb57835161296d90849060030263ffffffff6126a916565b600484602001516005811115612a0d57fe5b1415612a2957835161296d90849060060263ffffffff6126a916565b600584602001516005811115612a3b57fe5b1415612a5457835161296d90849063ffffffff61272316565b60405162461bcd60e51b81526004016107ff90613e5b565b60006107b2841015612a7d57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281612ab957fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b600080612af484612ddd565b90506000612b0184612ddd565b90506000612b0e86612df5565b612b1a5761016d612b1e565b61016e5b61ffff16905081831415612b5057612b4681612b3a8888612e12565b9063ffffffff612e2d16565b9350505050610b5f565b6000612b5b86612df5565b612b675761016d612b6b565b61016e5b61ffff1690506000612b9c83612b3a8a612b97612b8f8a600163ffffffff612ee916565b600180612768565b612e12565b90506000612bb983612b3a612bb388600180612768565b8b612e12565b9050612bef612bdf6001612bd3888a63ffffffff612f0e16565b9063ffffffff612f0e16565b611e57848463ffffffff6128a416565b9998505050505050505050565b6000610808610168612b3a62015180612c1b868863ffffffff612f0e16565b9063ffffffff612f5016565b600061080861016d612b3a62015180612c1b868863ffffffff612f0e16565b6000806000806000806000612c5a8961274a565b975095509350612c698861274a565b945092509050601f861415612c7d57601e95505b82601f1415612c8b57601e92505b6000612c9d848863ffffffff6128fa16565b90506000612cb1848863ffffffff6128fa16565b90506000612cc5848863ffffffff6128fa16565b9050612cf7610168612b3a85611e57612ce587601e63ffffffff612f9216565b611e578761016863ffffffff612f9216565b9c9b505050505050505050505050565b6000806000806000806000612d1b8a61274a565b975095509350612d2a8961274a565b945092509050612d398a6111dc565b861415612d4557601e95505b8789148015612d545750816002145b158015612d685750612d65896111dc565b83145b15612d7257601e92505b6000612d84848863ffffffff6128fa16565b90506000612d98848863ffffffff6128fa16565b90506000612dac848863ffffffff6128fa16565b9050612dcc610168612b3a85611e57612ce587601e63ffffffff612f9216565b9d9c50505050505050505050505050565b6000612dec62015180836111e9565b50909392505050565b600080612e0562015180846111e9565b5050905061080881612782565b600081831115612e2157600080fd5b50620151809190030490565b600081612e4c5760405162461bcd60e51b81526004016107ff90613fbd565b82612e5957506000610b5f565b670de0b6b3a764000083810290848281612e6f57fe5b0514612e8d5760405162461bcd60e51b81526004016107ff90613e15565b82600019148015612ea15750600160ff1b84145b15612ebe5760405162461bcd60e51b81526004016107ff90613e15565b6000838281612ec957fe5b059050806107375760405162461bcd60e51b81526004016107ff90613d36565b6000828201838110156108085760405162461bcd60e51b81526004016107ff90613b74565b600061080883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ffd565b600061080883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613029565b600082612fa157506000610b5f565b82600019148015612fb55750600160ff1b82145b15612fd25760405162461bcd60e51b81526004016107ff90613dce565b82820282848281612fdf57fe5b05146108085760405162461bcd60e51b81526004016107ff90613dce565b600081848411156130215760405162461bcd60e51b81526004016107ff91906139e3565b505050900390565b6000818361304a5760405162461bcd60e51b81526004016107ff91906139e3565b50600083858161305657fe5b0495945050505050565b60405180610f0001604052806078906020820280368337509192915050565b604080516080810190915260008082526020820190815260200160008152600060209091015290565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610b5f57600080fd5b803560098110610b5f57600080fd5b8035610b5f8161411e565b8035610b5f8161412b565b8035600d8110610b5f57600080fd5b803560138110610b5f57600080fd5b803560048110610b5f57600080fd5b600061084082840312156131bd578081fd5b50919050565b6000608082840312156131d4578081fd5b6131de60806140e6565b90508135815260208201356131f28161412b565b602082015260408201356132058161411e565b604082015260608201356132188161410d565b606082015292915050565b600060608284031215613234578081fd5b61323e60606140e6565b90508135815260208201356132528161412b565b60208201526040820135801515811461326a57600080fd5b604082015292915050565b600061028082840312156131bd578081fd5b600060208284031215613298578081fd5b6108088383613142565b6000602082840312156132b3578081fd5b5035919050565b600080600080608085870312156132cf578283fd5b843593506020850135600981106132e4578384fd5b925060408501356132f48161411e565b9396929550929360600135925050565b6000806000806000610d80868803121561331c578283fd5b8535945061332d87602088016131ab565b935061333d876108608801613275565b9250610ae086013561334e8161410d565b915061335e87610b008801613275565b90509295509295909350565b60006020828403121561337b578081fd5b8135600d8110610808578182fd5b60006020828403121561339a578081fd5b81356108088161411e565b600080600060c084860312156133b9578081fd5b83356133c48161411e565b9250602084013591506133da85604086016131c3565b90509250925092565b6000602082840312156133f4578081fd5b813561080881614138565b60008060408385031215613411578182fd5b823561341c81614138565b946020939093013593505050565b6000610840828403121561343c578081fd5b61080883836131ab565b600080600080610b00858703121561345c578182fd5b61346686866131ab565b9350613476866108408701613275565b9396939550505050610ac082013591610ae0013590565b600080600061088084860312156134a2578081fd5b6134ac85856131ab565b925061084084013591506108608401356134c581614138565b809150509250925092565b600080600061088084860312156134e5578081fd5b6134ef85856131ab565b956108408501359550610860909401359392505050565b6000806000806108a0858703121561351c578182fd5b61352686866131ab565b935061084085013592506108608501359150610880850135601d811061354a578182fd5b939692955090935050565b60006108408284031215613567578081fd5b6135726105e06140e6565b61357c848461318d565b815261358b8460208501613168565b602082015261359d846040850161317e565b60408201526135af8460608501613173565b60608201526135c18460808501613159565b60808201526135d38460a08501613168565b60a08201526135e58460c0850161319c565b60c08201526135f78460e0850161319c565b60e082015261010061360b85828601613168565b9082015261012061361e85858301613142565b9082015261014061363185858301613142565b90820152610160838101359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200808401359082015261022080840135908201526102408084013590820152610260808401359082015261028080840135908201526102a080840135908201526102c080840135908201526102e08084013590820152610300808401359082015261032080840135908201526103408084013590820152610360808401359082015261038080840135908201526103a080840135908201526103c080840135908201526103e08084013590820152610400808401359082015261042080840135908201526104408084013590820152610460808401359082015261048080840135908201526104a080840135908201526104c080840135908201526104e0808401359082015261050061378385828601613223565b9082015261056061379685858301613223565b6105208301526105c06137ab868287016131c3565b6105408401526137bf8661064087016131c3565b828401526137d1866106c087016131c3565b6105808401526137e58661074087016131c3565b6105a08401526137f9866107c087016131c3565b90830152509392505050565b600060808284031215613816578081fd5b61080883836131c3565b6000610280808385031215613833578182fd5b61383c816140e6565b6138468585613173565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60008060008060808587031215613932578182fd5b843593506132e48660208701613159565b6006811061394d57fe5b9052565b6020808252825182820181905260009190848201906040850190845b818110156139895783518352928401929184019160010161396d565b50909695505050505050565b901515815260200190565b90815260200190565b60208101601383106139b757fe5b91905290565b60208101600283106139b757fe5b60408101601d84106139d957fe5b9281526020015290565b6000602080835283518082850152825b81811015613a0f578581018301518582016040015282016139f3565b81811115613a205783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f5363686564756c652e636f6d70757465446174657346726f6d4379636c653a2060408201526d4d41585f4359434c455f53495a4560901b606082015260800190565b6020808252602e908201527f5363686564756c652e6765744e6578744379636c65446174653a20415454524960408201526d1095551157d393d517d193d5539160921b606082015260800190565b6020808252602d908201527f414e4e456e67696e652e7061796f666646756e6374696f6e3a2041545452494260408201526c15551157d393d517d193d55391609a1b606082015260800190565b60208082526035908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a6040820152741020aa2a2924a12aaa22afa727aa2fa327aaa7221760591b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526034908201527f436f6e7472616374526f6c65436f6e76656e74696f6e2e726f6c655369676e3a6040820152730810551514925095551157d393d517d193d5539160621b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b60208082526039908201527f446179436f756e74436f6e76656e74696f6e2e796561724672616374696f6e3a60408201527f204154545249425554455f4e4f545f535550504f525445442e00000000000000606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b60208082526027908201527f436f72652e796561724672616374696f6e3a2053544152545f4e4f545f42454660408201526613d49157d1539160ca1b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b60208082526036908201527f414e4e456e67696e652e73746174655472616e736974696f6e46756e6374696f6040820152751b8e8810551514925095551157d393d517d193d5539160521b606082015260800190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b600061028082019050614015828451613943565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60405181810167ffffffffffffffff8111828210171561410557600080fd5b604052919050565b801515811461411b57600080fd5b50565b6002811061411b57600080fd5b6006811061411b57600080fd5b601d811061411b57600080fdfea2646970667358221220ce35e31203c8582c2be7a88ba589e6130dc609a274a5b8f4b9137736f240807264736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "430:19501:85:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "430:19501:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5739:4802;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1010:924:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;631:346:84:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10897:2984:85:-;;;;;;:::i;:::-;;:::i;2736:913::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;298:52:73:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;956:145::-;;;;;;:::i;:::-;;:::i;1776:734:85:-;;;;;;:::i;:::-;;:::i;254:38:73:-;;;:::i;1016:376:85:-;;;;;;:::i;:::-;;:::i;14478:319::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;356:44:73:-;;;:::i;4073:1260:85:-;;;;;;:::i;:::-;;:::i;492:110::-;;;:::i;:::-;;;;;;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;648:583::-;;;;;;:::i;:::-;;:::i;5739:4802:85:-;5967:16;5999:46;;:::i;:::-;6055:13;6242:12;6229:9;:25;;;;;;;;;6225:996;;;6274:38;;;;:43;6270:941;;6337:54;;:::i;:::-;6394:336;6444:38;;;;6504:18;;;;6394:336;;;;;;;6544:28;;;6394:336;:::i;:::-;6594:26;;;;;;;;:::i;:::-;6642:4;6668:12;6702:10;6394:28;:336::i;:::-;6337:393;-1:-1:-1;6753:7:85;6748:449;397:3:73;6766:1:85;:18;;;6748:449;;;6817:23;6841:1;6817:26;;;;;;;;;;;;;6813:42;;6850:5;;6813:42;6911:5;:27;;;6881:23;6905:1;6881:26;;;;;;;;;;;;;:57;6877:71;;6940:8;;6877:71;6974:65;6986:23;7010:1;6986:26;;;;;;;;;;;;;7014:12;7028:10;6974:11;:65::i;:::-;6970:88;;7050:8;;6970:88;7096:53;7108:12;7122:23;7146:1;7122:26;;;;;;;;;;;;;7096:11;:53::i;:::-;7080:6;7087:5;7080:13;;;;;;;;;;:69;7171:7;;;;;6748:449;6786:3;;6748:449;;;;6270:941;;7264:14;7251:9;:27;;;;;;;;;7247:1240;;;7315:38;;;;:43;;;;:95;;-1:-1:-1;7378:27:85;;;;:32;;7315:95;:187;;;;;7460:5;:42;;;7430:5;:27;;;:72;7315:187;7294:1183;;;7535:40;;:::i;:::-;:71;;;;;;;7578:28;;;7535:71;:::i;:::-;7658:7;7624:31;;;:41;7535:71;-1:-1:-1;7684:54:85;;:::i;:::-;7741:346;7791:38;;;;7851:27;;;;7900:29;7951:26;;;;;;;;:::i;:::-;7999:4;8025:12;8059:10;7741:28;:346::i;:::-;7684:403;-1:-1:-1;8110:7:85;8105:358;397:3:73;8123:1:85;:18;;;8105:358;;;8174:23;8198:1;8174:26;;;;;;;;;;;;;8170:42;;8207:5;;8170:42;8238:65;8250:23;8274:1;8250:26;;;;;;;;;;;;;8278:12;8292:10;8238:11;:65::i;:::-;8234:88;;8314:8;;8234:88;8360:55;8372:14;8388:23;8412:1;8388:26;;;;;;;;8360:55;8344:6;8351:5;8344:13;;;;;;;;;;:71;8437:7;;;;;8105:358;8143:3;;8105:358;;;;7294:1183;;;8530:12;8517:9;:25;;;;;;;;;8513:819;;;8562:26;;;;:31;8558:764;;8613:42;;:::i;:::-;8658:312;8708:26;;;;8756:18;;;;8658:312;;;;;;;8796:16;;;8658:312;:::i;:::-;8613:357;-1:-1:-1;8993:7:85;8988:320;397:3:73;9006:1:85;:18;;;8988:320;;;9057:11;9069:1;9057:14;;;;;;;;;;;;;9053:30;;9078:5;;9053:30;9109:53;9121:11;9133:1;9121:14;;;;;;;;9109:53;9105:76;;9173:8;;9105:76;9219:41;9231:12;9245:11;9257:1;9245:14;;;;;;;;9219:41;9203:6;9210:5;9203:13;;;;;;;;;;:57;9282:7;;;;;8988:320;9026:3;;8988:320;;;;8558:764;;9391:12;9378:9;:25;;;;;;;;;9374:932;;;9423:42;;;;:47;9419:877;;9490:58;;:::i;:::-;9551:345;9601:42;;;;9665:18;;;;9551:345;;;;;;;9705:32;;;9551:345;:::i;:::-;9759:26;;;;;;;;:::i;:::-;9807:5;9834:12;9868:10;9551:28;:345::i;:::-;9490:406;-1:-1:-1;9919:7:85;9914:368;397:3:73;9932:1:85;:18;;;9914:368;;;9983:27;10011:1;9983:30;;;;;;;;;;;;;9979:46;;10020:5;;9979:46;10051:69;10063:27;10091:1;10063:30;;;;;;;;10051:69;10047:92;;10131:8;;10047:92;10177:57;10189:12;10203:27;10231:1;10203:30;;;;;;;;10177:57;10161:6;10168:5;10161:13;;;;;;;;;;:73;10256:7;;;;;9914:368;9952:3;;9914:368;;;;9419:877;;10367:25;10409:5;10395:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10395:20:85;-1:-1:-1;10367:48:85;-1:-1:-1;10430:9:85;10425:84;10449:5;10445:1;:9;10425:84;;;10489:6;10496:1;10489:9;;;;;;;;;;;10475:8;10484:1;10475:11;;;;;;;;;;;;;;;;;:23;10456:3;;10425:84;;;-1:-1:-1;10526:8:85;-1:-1:-1;;;5739:4802:85;;;;;;;:::o;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;-1:-1:-1;;;;;;631:346:84:o;10897:2984:85:-;11094:7;11249:12;11236:9;:25;;;;;;;;;11232:661;;;11281:38;;;;:43;11277:606;;11344:31;11378:251;;;;;;;;11437:28;;;11378:251;:::i;:::-;11487:26;;;;;;;;:::i;:::-;11535:5;:38;;;11595:16;11378:37;:251::i;:::-;11344:285;-1:-1:-1;11651:28:85;11647:51;;-1:-1:-1;11696:1:85;;-1:-1:-1;11681:17:85;;11647:51;11747:5;:27;;;11720:23;:54;11716:77;;-1:-1:-1;11791:1:85;;-1:-1:-1;11776:17:85;;11716:77;11818:50;11830:12;11844:23;11818:11;:50::i;:::-;11811:57;;;;;11277:606;11936:14;11923:9;:27;;;;;;;;;11919:776;;;11970:38;;;;:43;;;;:79;;-1:-1:-1;12017:27:85;;;;:32;;11970:79;11966:719;;;12069:40;;:::i;:::-;:71;;;;;;;12112:28;;;12069:71;:::i;:::-;12192:7;12158:31;;;:41;12069:71;-1:-1:-1;12217:38:85;12258:252;12069:71;12368:26;;;;;;;;:::i;:::-;12416:5;:38;;;12476:16;12258:37;:252::i;:::-;12217:293;-1:-1:-1;12532:35:85;12528:58;;-1:-1:-1;12584:1:85;;-1:-1:-1;12569:17:85;;-1:-1:-1;12569:17:85;12528:58;12611:59;12623:14;12639:30;12611:11;:59::i;:::-;12604:66;;;;;;11966:719;12738:12;12725:9;:25;;;;;;;;;12721:494;;;12770:26;;;;:31;12766:439;;12821:19;12843:227;;;;;;;;12902:16;;;12843:227;:::i;:::-;12940:26;;;;;;;;:::i;:::-;12988:5;:26;;;13036:16;12843:37;:227::i;:::-;12821:249;-1:-1:-1;13092:16:85;13088:39;;-1:-1:-1;13125:1:85;;-1:-1:-1;13110:17:85;;13088:39;13152:38;13164:12;13178:11;13152;:38::i;12766:439::-;13274:12;13261:9;:25;;;;;;;;;13257:590;;;13306:42;;;;:47;13302:535;;13373:35;13411:259;;;;;;;;13470:32;;;13411:259;:::i;:::-;13524:26;;;;;;;;:::i;:::-;13572:5;:42;;;13636:16;13411:37;:259::i;:::-;13373:297;-1:-1:-1;13692:32:85;13688:55;;-1:-1:-1;13741:1:85;;-1:-1:-1;13726:17:85;;13688:55;13768:54;13780:12;13794:27;13768:11;:54::i;13302:535::-;-1:-1:-1;13872:1:85;10897:2984;;;;;:::o;2736:913::-;2854:12;;:::i;:::-;2882:18;;:::i;:::-;2939:22;2911:50;;338:12:73;2971:31:85;;;:48;;;3029:31;;;:48;3106:16;;;;-1:-1:-1;3087:16:85;;:35;3153:18;;;;3132;;;;:39;;;;3238:23;;;;;3207:28;;3216:18;;;;;;;;:::i;:::-;3207:8;:28::i;:::-;:54;;;3181:23;;;:80;3299:25;;;;3271;;;:53;3389:21;;;;3358:28;3367:18;;;;;;;;:::i;3358:28::-;:52;;;3334:21;;;:76;3439:16;;;;3420;;;:35;3583:36;;;;3552:28;3561:18;;;;;;;;:::i;3552:28::-;:67;;;3513:36;;;:106;:5;-1:-1:-1;2736:913:85;;;;:::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;-1:-1:-1;;956:145:82:o;1776:734:85:-;1994:6;;2100:24;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2100:38:85;;;:84;;;;-1:-1:-1;2160:24:85;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2142:42:85;:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2142:42:85;;;2100:84;2096:282;;;2207:160;2353:12;2207:128;;;;;;;;2239:5;2207:128;:::i;:::-;;;;;;;;2262:5;2207:128;:::i;:::-;2285:6;2309:12;2207:14;:128::i;:::-;:138;:160;:138;:160;:::i;:::-;2200:167;;;;2096:282;2395:108;;;;;;;;2423:5;2395:108;:::i;:::-;;;;;;;;2442:5;2395:108;:::i;:::-;2461:6;2481:12;2395:14;:108::i;:::-;2388:115;1776:734;-1:-1:-1;;;;;1776:734:85:o;254:38:73:-;290:2;254:38;:::o;1016:376:85:-;1233:12;;:::i;:::-;1268:117;;;;;;;;1305:5;1268:117;:::i;:::-;;;;;;;;1324:5;1268:117;:::i;:::-;1343:6;1363:12;1268:23;:117::i;14478:319::-;14786:4;14478:319;;;;;;;:::o;356:44:73:-;397:3;356:44;:::o;4073:1260:85:-;4275:16;4307:46;;:::i;:::-;4363:12;4418:64;4430:5;:25;;;4457:12;4471:10;4418:11;:64::i;:::-;4414:185;;;4514:53;4526:13;4541:5;:25;;;4514:11;:53::i;:::-;4498:6;4505:5;4498:13;;;;;;;;;;;;:69;4581:7;;4414:185;4633:18;;;;:23;4629:236;;4676:57;4688:5;:18;;;4708:12;4722:10;4676:11;:57::i;:::-;4672:183;;;4769:46;4781:13;4796:5;:18;;;4769:11;:46::i;:::-;4753:6;4760:5;4753:13;;;;;;;;;;;;:62;4833:7;;4672:183;4923:57;4935:5;:18;;;4955:12;4969:10;4923:11;:57::i;:::-;:65;;4984:4;4923:65;4919:179;;;5021:45;5033:12;5047:5;:18;;;5021:11;:45::i;:::-;5005:6;5012:5;5005:13;;;;;;;;;;;;:61;5080:7;;4919:179;5159:25;5201:5;5187:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5187:20:85;-1:-1:-1;5159:48:85;-1:-1:-1;5222:9:85;5217:84;5241:5;5237:9;;:1;:9;5217:84;;;5281:6;5288:1;5281:9;;;;;;;;;;;5267:8;5276:1;5267:11;;;;;;;;;;;;;;;;;:23;5248:3;;5217:84;;;-1:-1:-1;5318:8:85;4073:1260;-1:-1:-1;;;;;;4073:1260:85:o;492:110::-;579:16;492:110;:::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-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;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;648:583::-;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;2384:2503:81:-;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:15;:64::i;:::-;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;5714:342::-;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;;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;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;17982:1947:85:-;18172:6;18195:19;18216:20;18240:19;18252:6;18240:11;:19::i;:::-;18194:65;;-1:-1:-1;18194:65:85;-1:-1:-1;18784:12:85;18771:9;:25;;;;;;;;;18767:39;;;18805:1;18798:8;;;;;;18767:39;18833:14;18820:9;:27;;;;;;;;;18816:41;;;18856:1;18849:8;;;;;;18816:41;18884:13;18871:9;:26;;;;;;;;;18867:40;;;18906:1;18899:8;;;;;;18867:40;18934:12;18921:9;:25;;;;;;;;;18917:39;;;18955:1;18948:8;;;;;;18917:39;18983:12;18970:9;:25;;;;;;;;;18966:39;;;19004:1;18997:8;;;;;;18966:39;19032:12;19019:9;:25;;;;;;;;;19015:39;;;19053:1;19046:8;;;;;;19015:39;19081:12;19068:9;:25;;;;;;;;;19064:90;;;19102:52;19113:5;19120;19127:12;19141;19102:10;:52::i;:::-;19095:59;;;;;;19064:90;19181:13;19168:9;:26;;;;;;;;;19164:92;;;19203:53;19215:5;19222;19229:12;19243;19203:11;:53::i;19164:92::-;19283:12;19270:9;:25;;;;;;;;;19266:90;;;19304:52;19315:5;19322;19329:12;19343;19304:10;:52::i;19266:90::-;19383:12;19370:9;:25;;;;;;;;;19366:90;;;19404:52;19415:5;19422;19429:12;19443;19404:10;:52::i;19366:90::-;19483:12;19470:9;:25;;;;;;;;;19466:90;;;19504:52;19515:5;19522;19529:12;19543;19504:10;:52::i;19466:90::-;19583:12;19570:9;:25;;;;;;;;;19566:90;;;19604:52;19615:5;19622;19629:12;19643;19604:10;:52::i;19566:90::-;19683:12;19670:9;:25;;;;;;;;;19666:90;;;19704:52;19715:5;19722;19729:12;19743;19704:10;:52::i;19666:90::-;19783:12;19770:9;:25;;;;;;;;;19766:90;;;19804:52;19815:5;19822;19829:12;19843;19804:10;:52::i;19766:90::-;19867:55;;-1:-1:-1;;;19867:55:85;;;;;;;:::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;15457:1885:85:-;15656:12;;:::i;:::-;15685:19;15706:20;15730:19;15742:6;15730:11;:19::i;:::-;15684:65;;-1:-1:-1;15684:65:85;-1:-1:-1;15879:12:85;15866:9;:25;;;;;;;;;15862:90;;;15900:52;15911:5;15918;15925:12;15939;15900:10;:52::i;15862:90::-;15979:12;15966:9;:25;;;;;;;;;15962:90;;;16000:52;16011:5;16018;16025:12;16039;16000:10;:52::i;15962:90::-;16079:13;16066:9;:26;;;;;;;;;16062:92;;;16101:53;16113:5;16120;16127:12;16141;16101:11;:53::i;16062:92::-;16181:14;16168:9;:27;;;;;;;;;16164:94;;;16204:54;16217:5;16224;16231:12;16245;16204;:54::i;16164:94::-;16285:12;16272:9;:25;;;;;;;;;16268:90;;;16306:52;16317:5;16324;16331:12;16345;16306:10;:52::i;16268:90::-;16385:12;16372:9;:25;;;;;;;;;16368:90;;;16406:52;16417:5;16424;16431:12;16445;16406:10;:52::i;16368:90::-;16485:12;16472:9;:25;;;;;;;;;16468:90;;;16506:52;16517:5;16524;16531:12;16545;16506:10;:52::i;16468:90::-;16585:12;16572:9;:25;;;;;;;;;16568:90;;;16606:52;16617:5;16624;16631:12;16645;16606:10;:52::i;16568:90::-;16685:12;16672:9;:25;;;;;;;;;16668:90;;;16706:52;16717:5;16724;16731:12;16745;16706:10;:52::i;16668:90::-;16785:13;16772:9;:26;;;;;;;;;16768:92;;;16807:53;16819:5;16826;16833:12;16847;16807:11;:53::i;16768:92::-;16887:12;16874:9;:25;;;;;;;;;16870:90;;;16908:52;16919:5;16926;16933:12;16947;16908:10;:52::i;16870:90::-;16987:12;16974:9;:25;;;;;;;;;16970:90;;;17008:52;17019:5;17026;17033:12;17047;17008:10;:52::i;16970:90::-;17087:12;17074:9;:25;;;;;;;;;17070:90;;;17108:52;17119:5;17126;17133:12;17147;17108:10;:52::i;17070:90::-;17187:12;17174:9;:25;;;;;;;;;17170:90;;;17208:52;17219:5;17226;17233:12;17247;17208:10;:52::i;17170:90::-;17271:64;;-1:-1:-1;;;17271:64:85;;;;;;;:::i;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;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;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;457:1019:86:-;655:6;;681:5;:14;;;:28;;;;;;;;;677:158;;;797:5;:13;;;750:28;759:5;:18;;;750:8;:28::i;:::-;:60;;;725:99;;;;677:158;845:24;913:328;943:96;957:5;:16;;;975:5;:27;;;1004:5;:14;;;1020:5;:18;;;943:13;:96::i;:::-;1057:92;1071:12;1085:5;:27;;;1114:5;:14;;;1130:5;:18;;;1057:13;:92::i;:::-;1167:5;:24;;;1209:5;:18;;;913:12;:328::i;:::-;893:348;;1283:176;1334:111;1421:5;:23;;;1334:59;1379:5;:13;;;1334:17;:44;;:59;;;;:::i;:111::-;1283:16;;;;;:176;:33;:176;:::i;1616:405::-;1827:6;1932:72;1977:5;:26;;;1932:5;:23;;;:44;;:72;;;;:::i;:::-;1870:28;1879:5;:18;;;1870:8;:28::i;:::-;-1:-1:-1;;1870:47:86;:134;;;1849:165;;1616:405;;;;;;:::o;2148:974::-;2346:6;2368:24;2436:328;2466:96;2480:5;:16;;;2498:5;:27;;;2527:5;:14;;;2543:5;:18;;;2466:13;:96::i;2436:328::-;2416:348;;2806:299;2878:213;2942:131;3049:5;:23;;;2942:75;2991:5;:25;;;2942:17;:48;;:75;;;;:::i;:131::-;2878:21;;;;;:213;:42;:213;:::i;:::-;2806:31;;;;;:299;:54;:299;:::i;3258:330::-;3462:6;3548:5;:23;;;3505:28;3514:5;:18;;;3505:8;:28::i;:::-;:66;;;;3258:330;-1:-1:-1;;;;;3258:330:86:o;6794:1260::-;6992:6;7014:24;7082:328;7112:96;7126:5;:16;;;7144:5;:27;;;7173:5;:14;;;7189:5;:18;;;7112:13;:96::i;7082:328::-;7062:348;;7452:585;7557:466;7844:139;7959:5;:23;;;7844:79;7897:5;:25;;;7844:17;:52;;:79;;;;:::i;:139::-;7796:5;:21;;;7733:5;:36;;;:84;:250;7656:28;7665:5;:18;;;7656:8;:28::i;:::-;:349;;;7589:5;:23;;;7558:28;7567:5;:18;;;7558:8;:28::i;:::-;:54;;;;7557:466;:77;:466;:::i;:::-;7487:28;7496:5;:18;;;7487:8;:28::i;:::-;7453:62;;:5;:31;;;:62;7452:87;;:585;;;;:::i;3711:353::-;3921:6;3964:83;4023:5;:23;;;3964:5;:31;;;:58;;:83;;;;:::i;4193:1269::-;4391:6;4413:24;4481:328;4511:96;4525:5;:16;;;4543:5;:27;;;4572:5;:14;;;4588:5;:18;;;4511:13;:96::i;4481:328::-;4461:348;-1:-1:-1;4855:13:86;4834:5;:17;;;:34;;;;;;;;;4830:626;;;4956:5;:17;;;4909:28;4918:5;:18;;;4909:8;:28::i;:::-;:64;;;4884:103;;;;;4830:626;5029:13;5008:5;:17;;;:34;;;;;;;;;5004:452;;;5130:115;5221:5;:23;;;5130:63;5175:5;:17;;;5130;:44;;:63;;;;:::i;:115::-;5083:28;5092:5;:18;;;5083:8;:28::i;5004:452::-;5407:23;;;;5362:69;;:17;;:69;:44;:69;:::i;5612:955::-;5810:6;5832:24;5900:328;5930:96;5944:5;:16;;;5962:5;:27;;;5991:5;:14;;;6007:5;:18;;;5930:13;:96::i;5900:328::-;5880:348;;6313:237;6413:123;6512:5;:23;;;6413:71;6458:5;:25;;;6413:17;:44;;:71;;;;:::i;:123::-;6356:21;;;;6313:25;;;;:65;;;:42;:65;:::i;:::-;:82;:237;:82;:237;:::i;:::-;6270:28;6279:5;:18;;;6270:8;:28::i;:::-;:280;;;;5612:955;-1:-1:-1;;;;;;5612:955:86:o;792:1096:87:-;991:12;;:::i;:::-;1019:24;1087:328;1117:96;1131:5;:16;;;1149:5;:27;;;1178:5;:14;;;1194:5;:18;;;1117:13;:96::i;1087:328::-;1067:348;;1459:173;1507:115;1604:17;1507:73;1556:5;:23;;;1507:5;:25;;;:48;;:73;;;;:::i;:115::-;1459:21;;;;;:173;:34;:173;:::i;:::-;1435:21;;;:197;1741:23;;;;1704:13;;;;1661:156;;1704:103;;1789:17;;1704:61;;:13;:61;:36;:61;:::i;1661:156::-;1642:16;;;:175;-1:-1:-1;;;1827:16:87;;;:31;1642:16;792:1096;-1:-1:-1;792:1096:87:o;2024:941::-;2223:12;;:::i;:::-;2251:24;2319:328;2349:96;2363:5;:16;;;2381:5;:27;;;2410:5;:14;;;2426:5;:18;;;2349:13;:96::i;2319:328::-;2299:348;;2691:173;2739:115;2836:17;2739:73;2788:5;:23;;;2739:5;:25;;;:48;;:73;;;;:::i;2691:173::-;2667:21;;;:197;-1:-1:-1;;2893:1:87;2874:16;;;:20;-1:-1:-1;2904:16:87;;;:31;2667:21;2024:941;-1:-1:-1;2024:941:87:o;9229:497::-;9429:12;;:::i;:::-;9514:5;:23;;;9483:28;9492:5;:18;;;9483:8;:28::i;:::-;:54;;;9457:23;;;:80;-1:-1:-1;;9575:25:87;;;;9547;;;:53;9610:16;;;:31;9675:21;;;;;9651;;;:45;9457:23;9229:497::o;9732:1211::-;9933:12;;:::i;:::-;9961:24;10029:328;10059:96;10073:5;:16;;;10091:5;:27;;;10120:5;:14;;;10136:5;:18;;;10059:13;:96::i;10029:328::-;10009:348;;10401:251;10449:193;10505:123;10610:17;10505:77;10558:5;:23;;;10505:5;:25;;;:52;;:77;;;;:::i;10401:251::-;-1:-1:-1;10686:1:87;10377:21;;;10662:25;10796:23;;;;10759:13;;;;10716:156;;10759:103;;10844:17;;10759:61;;:13;:61;:36;:61;:::i;10949:924::-;11148:12;;:::i;:::-;11176:24;11244:328;11274:96;11288:5;:16;;;11306:5;:27;;;11335:5;:14;;;11351:5;:18;;;11274:13;:96::i;11244:328::-;11616:1;11592:21;;;:25;11726:23;;;;11689:13;;;;11224:348;;-1:-1:-1;11646:156:87;;11689:103;;11224:348;;11689:61;;;:36;:61;:::i;11879:1558::-;12078:12;;:::i;:::-;12106:24;12174:328;12204:96;12218:5;:16;;;12236:5;:27;;;12265:5;:14;;;12281:5;:18;;;12204:13;:96::i;12174:328::-;12154:348;;12546:173;12594:115;12691:17;12594:73;12643:5;:23;;;12594:5;:25;;;:48;;:73;;;;:::i;12546:173::-;12522:21;;;:197;12828:23;;;;12791:13;;;;12748:156;;12791:103;;12876:17;;12791:61;;:13;:61;:36;:61;:::i;12748:156::-;12729:16;;;:175;13301:21;;;;13239:36;;;;12940:425;;13033:322;;13239:84;;;:61;:84;:::i;:::-;13170:28;13179:5;:18;;;13170:8;:28::i;13033:322::-;12990:28;12999:5;:18;;;12990:8;:28::i;:::-;:365;;;12940:5;:23;;;:36;;:425;;;;:::i;:::-;12914:23;;;:451;-1:-1:-1;;;13376:16:87;;;:31;12914:23;11879:1558;-1:-1:-1;11879:1558:87:o;13443:1195::-;13642:12;;:::i;:::-;13670:24;13738:328;13768:96;13782:5;:16;;;13800:5;:27;;;13829:5;:14;;;13845:5;:18;;;13768:13;:96::i;13738:328::-;13718:348;;14110:173;14158:115;14255:17;14158:73;14207:5;:23;;;14158:5;:25;;;:48;;:73;;;;:::i;14110:173::-;14086:21;;;:197;14392:23;;;;14355:13;;;;14312:156;;14355:103;;14440:17;;14355:61;;:13;:61;:36;:61;:::i;14312:156::-;14293:16;;;:175;-1:-1:-1;;14504:3:87;14478:23;;;:29;-1:-1:-1;14545:22:87;14517:50;;14577:16;;;:31;14293:16;14577;-1:-1:-1;13443:1195:87:o;5633:1154::-;5833:12;;:::i;:::-;5861:24;5929:328;5959:96;5973:5;:16;;;5991:5;:27;;;6020:5;:14;;;6036:5;:18;;;5959:13;:96::i;5929:328::-;5909:348;;6301:173;6349:115;6446:17;6349:73;6398:5;:23;;;6349:5;:25;;;:48;;:73;;;;:::i;6301:173::-;6277:21;;;:197;6583:23;;;;6546:13;;;;6503:156;;6546:103;;6631:17;;6546:61;;:13;:61;:36;:61;:::i;6503:156::-;6484:16;;;:175;-1:-1:-1;;;6697:19:87;;;;;;6669:25;;;:47;6726:16;;;:31;;;;6484:16;5633:1154::o;14644:1794::-;14837:12;;:::i;:::-;14961:16;;;;14938:20;;;;15015:25;;;;14915:43;;;:62;;;;14901:11;;15006:35;;14915:62;;15006:35;:8;:35;:::i;:::-;14987:54;;15107:9;15091:5;:13;;;:25;15090:75;;;;;15146:5;:17;;;-1:-1:-1;;15139:24:87;15122:5;:13;;;:42;15090:75;15086:244;;;-1:-1:-1;15193:13:87;;;;15086:244;;;15247:5;:17;;;-1:-1:-1;;15240:24:87;15227:9;:38;15223:107;;;-1:-1:-1;15301:17:87;;;;15294:24;;15223:107;15346:25;;;;:40;;15376:9;15346:40;:29;:40;:::i;:::-;15339:47;;15449:4;15433:5;:13;;;:20;:55;;;;;15473:5;:15;;;15457:5;:13;;;:31;15433:55;15429:187;;;15511:5;:13;;;15504:20;;15429:187;;;15552:5;:15;;;15545:4;:22;15541:75;;;15590:5;:15;;;15583:22;;15541:75;15626:24;15694:328;15724:96;15738:5;:16;;;15756:5;:27;;;15785:5;:14;;;15801:5;:18;;;15724:13;:96::i;:::-;15838:92;15852:12;15866:5;:27;;;15895:5;:14;;;15911:5;:18;;;15838:13;:92::i;:::-;15948:5;:24;;;15990:5;:18;;;15694:12;:328::i;:::-;15674:348;;16066:173;16114:115;16211:17;16114:73;16163:5;:23;;;16114:5;:25;;;:48;;:73;;;;:::i;:115::-;16066:21;;;;;:173;:34;:173;:::i;:::-;16042:21;;;:197;-1:-1:-1;;16249:25:87;;;:32;-1:-1:-1;;;16291:36:87;;;:40;16377:16;;;:31;16042:21;14644:1794;-1:-1:-1;14644:1794:87:o;16444:1481::-;16643:12;;:::i;:::-;16671:24;16739:328;16769:96;16783:5;:16;;;16801:5;:27;;;16830:5;:14;;;16846:5;:18;;;16769:13;:96::i;16739:328::-;16719:348;;17111:173;17159:115;17256:17;17159:73;17208:5;:23;;;17159:5;:25;;;:48;;:73;;;;:::i;17111:173::-;17087:21;;;:197;17393:23;;;;17356:13;;;;17313:156;;17356:103;;17441:17;;17356:61;;:13;:61;:36;:61;:::i;17313:156::-;17294:16;;;:175;17508:17;17485:5;:19;;;:40;;;;;;;;;17484:88;;;-1:-1:-1;17554:17:87;17531:5;:19;;;:40;;;;;;;;;17484:88;17480:182;;;17622:1;17588:31;;;:35;17480:182;17699:18;17676:5;:19;;;:41;;;;;;;;;17675:89;;;-1:-1:-1;17746:17:87;17723:5;:19;;;:40;;;;;;;;;17675:89;17671:183;;;17814:1;17780:31;;;:35;17671:183;-1:-1:-1;;;17864:16:87;;;:31;:16;16444:1481;-1:-1:-1;16444:1481:87:o;6923:495::-;7128:12;;:::i;:::-;-1:-1:-1;;7182:1:87;7156:23;;;:27;;;7193:25;;;:29;;;7232:21;;;:25;;;7267:16;;;:20;7325:22;7297:50;;-1:-1:-1;7357:16:87;;:31;7156:23;7357:16;-1:-1:-1;6923:495:87:o;7549:1674::-;7741:12;;:::i;:::-;7801:25;7830:5;:23;;;7857:1;7830:28;7829:242;;8048:5;:23;;;7829:242;;;7874:171;7906:12;7936:5;:27;;;7981:5;:14;;;8013:5;:18;;;7874:14;:171::i;:::-;8183:17;;;;:23;;;7801:270;;-1:-1:-1;8117:12:87;;8082:24;;8179:305;;;8222:17;8242:60;8265:5;:17;;;8284;8242:22;:60::i;:::-;8222:80;;8340:9;8320:16;:29;8316:158;;8397:22;8369:50;;;8397:22;-1:-1:-1;8316:158:87;8179:305;;8498:5;:23;;;:29;;;:49;;;;;8532:15;8531:16;8498:49;8494:398;;;8563:23;8589:66;8612:5;:23;;;8637:17;8589:22;:66::i;:::-;8563:92;;8693:15;8673:16;:35;8669:213;;8756:22;8728:50;;8669:213;;;8845:22;8817:50;;8669:213;8494:398;;8906:23;;;;8902:292;;9012:171;9044:12;9074:5;:27;;;9119:5;:14;;;9151:5;:18;;;9012:14;:171::i;:::-;8986:23;;;:197;8902:292;-1:-1:-1;9211:5:87;;7549:1674;-1:-1:-1;;;;;;7549:1674:87:o;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;10938:198;1020:12;11062:23;;11050:35;;11103:25;;;;11095: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;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;5820:157::-;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;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;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;1830:106:80:-;1886:6;1920:1;1915;:6;;:14;;-1:-1:-1;1928:1:80;1908:21;-1:-1:-1;1830:106:80:o;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;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;2045:511:106:-;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;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;:72::-;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;3066:130::-;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;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;51402:54;;53086:35;;53076:2;;53135:1;;53125:12;410:184;504:20;;53489:1;53479:12;;53469:2;;53505:1;;53495:12;601:158;682:20;;707:47;682:20;707:47;:::i;766:180::-;858:20;;883:58;858:20;883:58;:::i;953:166::-;1038:20;;53849:2;53839:13;;53829:2;;53866:1;;53856:12;1126:166;1211:20;;53969:2;53959:13;;53949:2;;53986:1;;53976:12;2156:164;2240:20;;54680:1;54670:12;;54660:2;;54696:1;;54686:12;2812:162;;2925:4;2916:6;2911:3;2907:16;2903:27;2900:2;;;-1:-1;;2933:12;2900:2;-1:-1;2953:15;2893:81;-1:-1;2893:81::o;11004:755::-;;11115:4;11103:9;11098:3;11094:19;11090:30;11087:2;;;-1:-1;;11123:12;11087:2;11151:20;11115:4;11151:20;:::i;:::-;11142:29;;16043:6;16030:20;11232:16;11225:75;11358:2;11423:9;11419:22;858:20;883:58;935:5;883:58;:::i;:::-;11358:2;11373:16;;11366:82;11506:2;11567:22;;682:20;707:47;682:20;707:47;:::i;:::-;11506:2;11521:16;;11514:82;11658:2;11709:22;;206:20;231:30;206:20;231:30;:::i;:::-;11658:2;11673:16;;11666:72;11677:5;11081:678;-1:-1;;11081:678::o;11782:606::-;;11892:4;11880:9;11875:3;11871:19;11867:30;11864:2;;;-1:-1;;11900:12;11864:2;11928:20;11892:4;11928:20;:::i;:::-;11919:29;;16043:6;16030:20;12009:16;12002:75;12135:2;12200:9;12196:22;858:20;883:58;935:5;883:58;:::i;:::-;12135:2;12150:16;;12143:82;12287:2;12338:22;;206:20;50537:13;;50530:21;53207:32;;53197:2;;-1:-1;;53243:12;53197:2;12287;12302:16;;12295:72;12306:5;11858:530;-1:-1;;11858:530::o;12416:158::-;;12526:3;12517:6;12512:3;12508:16;12504:26;12501:2;;;-1:-1;;12533:12;16100:241;;16204:2;16192:9;16183:7;16179:23;16175:32;16172:2;;;-1:-1;;16210:12;16172:2;16272:53;16317:7;16293:22;16272:53;:::i;16348:241::-;;16452:2;16440:9;16431:7;16427:23;16423:32;16420:2;;;-1:-1;;16458:12;16420:2;-1:-1;340:20;;16414:175;-1:-1;16414:175::o;16596:699::-;;;;;16792:3;16780:9;16771:7;16767:23;16763:33;16760:2;;;-1:-1;;16799:12;16760:2;353:6;340:20;16851:63;;16951:2;17021:9;17017:22;504:20;53489:1;53482:5;53479:12;53469:2;;-1:-1;;53495:12;53469:2;16959:90;-1:-1;17086:2;17139:22;;682:20;707:47;682:20;707:47;:::i;:::-;16754:541;;;;-1:-1;17094:77;;17208:2;17247:22;16030:20;;-1:-1;;16754:541::o;17302:905::-;;;;;;17552:4;17540:9;17531:7;17527:23;17523:34;17520:2;;;-1:-1;;17560:12;17520:2;353:6;340:20;17612:63;;17730:82;17804:7;17712:2;17784:9;17780:22;17730:82;:::i;:::-;17720:92;;17869:79;17940:7;17849:4;17920:9;17916:22;17869:79;:::i;:::-;17859:89;;17985:4;18027:9;18023:22;206:20;231:30;255:5;231:30;:::i;:::-;17995:60;-1:-1;18112:79;18183:7;18092:4;18159:22;;18112:79;:::i;:::-;18102:89;;17514:693;;;;;;;;:::o;18214:277::-;;18336:2;18324:9;18315:7;18311:23;18307:32;18304:2;;;-1:-1;;18342:12;18304:2;1051:6;1038:20;53849:2;53842:5;53839:13;53829:2;;-1:-1;;53856:12;18498:293;;18628:2;18616:9;18607:7;18603:23;18599:32;18596:2;;;-1:-1;;18634:12;18596:2;695:6;682:20;707:47;748:5;707:47;:::i;18798:588::-;;;;18984:3;18972:9;18963:7;18959:23;18955:33;18952:2;;;-1:-1;;18991:12;18952:2;695:6;682:20;707:47;748:5;707:47;:::i;:::-;19043:89;-1:-1;19169:2;19208:22;;16030:20;;-1:-1;19295:75;19362:7;19277:2;19338:22;;19295:75;:::i;:::-;19285:85;;18946:440;;;;;:::o;19393:271::-;;19512:2;19500:9;19491:7;19487:23;19483:32;19480:2;;;-1:-1;;19518:12;19480:2;1768:6;1755:20;1780:48;1822:5;1780:48;:::i;19671:396::-;;;19807:2;19795:9;19786:7;19782:23;19778:32;19775:2;;;-1:-1;;19813:12;19775:2;1768:6;1755:20;1780:48;1822:5;1780:48;:::i;:::-;19865:78;19980:2;20019:22;;;;16030:20;;-1:-1;;;19769:298::o;20074:301::-;;20207:4;20195:9;20186:7;20182:23;20178:34;20175:2;;;-1:-1;;20215:12;20175:2;20277:82;20351:7;20327:22;20277:82;:::i;20382:734::-;;;;;20592:4;20580:9;20571:7;20567:23;20563:34;20560:2;;;-1:-1;;20600:12;20560:2;20662:82;20736:7;20712:22;20662:82;:::i;:::-;20652:92;;20801:79;20872:7;20781:4;20852:9;20848:22;20801:79;:::i;:::-;20554:562;;20791:89;;-1:-1;;;;20917:4;20958:22;;340:20;;21027:4;21068:22;340:20;;20554:562::o;21123:585::-;;;;21305:4;21293:9;21284:7;21280:23;21276:34;21273:2;;;-1:-1;;21313:12;21273:2;21375:82;21449:7;21425:22;21375:82;:::i;:::-;21365:92;;21494:4;21539:9;21535:22;16030:20;21504:63;;21604:4;21664:9;21660:22;1755:20;1780:48;1822:5;1780:48;:::i;:::-;21614:78;;;;21267:441;;;;;:::o;21715:555::-;;;;21882:4;21870:9;21861:7;21857:23;21853:34;21850:2;;;-1:-1;;21890:12;21850:2;21952:82;22026:7;22002:22;21952:82;:::i;:::-;21942:92;22071:4;22112:22;;16030:20;;-1:-1;22181:4;22222:22;;;16030:20;;21844:426;-1:-1;;;21844:426::o;22277:712::-;;;;;22476:4;22464:9;22455:7;22451:23;22447:34;22444:2;;;-1:-1;;22484:12;22444:2;22546:82;22620:7;22596:22;22546:82;:::i;:::-;22536:92;;22665:4;22710:9;22706:22;16030:20;22675:63;;22775:4;22820:9;22816:22;16030:20;22785:63;;22885:4;22945:9;22941:22;1755:20;54338:2;54331:5;54328:13;54318:2;;-1:-1;;54345:12;54318:2;22438:551;;;;-1:-1;22438:551;;-1:-1;;22438:551::o;22996:297::-;;23127:4;23115:9;23106:7;23102:23;23098:34;23095:2;;;-1:-1;;23135:12;23095:2;3157:22;3172:6;3157:22;:::i;:::-;3269:67;3332:3;3308:22;3269:67;:::i;:::-;3251:16;3244:93;3435:63;3494:3;3402:2;3474:9;3470:22;3435:63;:::i;:::-;3402:2;3421:5;3417:16;3410:89;3601:67;3664:3;3568:2;3644:9;3640:22;3601:67;:::i;:::-;3568:2;3587:5;3583:16;3576:93;3777:73;3846:3;3744:2;3826:9;3822:22;3777:73;:::i;:::-;3744:2;3763:5;3759:16;3752:99;3963:76;4035:3;3929;4015:9;4011:22;3963:76;:::i;:::-;3929:3;3949:5;3945:16;3938:102;4151:75;4222:3;4117;4202:9;4198:22;4151:75;:::i;:::-;4117:3;4137:5;4133:16;4126:101;4331:68;4395:3;4297;4375:9;4371:22;4331:68;:::i;:::-;4297:3;4317:5;4313:16;4306:94;4502:66;4564:3;4468;4544:9;4540:22;4502:66;:::i;:::-;4468:3;4488:5;4484:16;4477:92;4634:3;4670:63;4729:3;4634;4709:9;4705:22;4670:63;:::i;:::-;4650:18;;;4643:91;4799:3;4835:49;4880:3;4856:22;;;4835:49;:::i;:::-;4815:18;;;4808:77;4960:3;4996:49;5041:3;5017:22;;;4996:49;:::i;:::-;4976:18;;;4969:77;5128:3;5185:22;;;340:20;5144:18;;;5137:77;5287:3;5344:22;;;16030:20;5303:18;;;5296:77;5440:3;5497:22;;;16030:20;5456:18;;;5449:77;5602:3;5659:22;;;16030:20;5618:18;;;5611:77;5757:3;5814:22;;;16030:20;5773:18;;;5766:77;5912:3;5969:22;;;16030:20;5928:18;;;5921:77;6076:3;6133:22;;;16030:20;6092:18;;;6085:77;6251:3;6308:22;;;16030:20;6267:18;;;6260:77;6420:3;6477:22;;;16030:20;6436:18;;;6429:77;6592:3;6649:22;;;16030:20;6608:18;;;6601:77;6755:3;6812:22;;;16030:20;6771:18;;;6764:77;6934:3;6991:22;;;16030:20;6950:18;;;6943:77;7094:3;7150:22;;;2719:20;7110:18;;;7103:76;7255:3;7311:22;;;2719:20;7271:18;;;7264:76;7412:3;7468:22;;;2719:20;7428:18;;;7421:76;7568:3;7624:22;;;2719:20;7584:18;;;7577:76;7720:3;7776:22;;;2719:20;7736:18;;;7729:76;7875:3;7931:22;;;2719:20;7891:18;;;7884:76;8024:3;8080:22;;;2719:20;8040:18;;;8033:76;8176:3;8232:22;;;2719:20;8192:18;;;8185:76;8329:3;8385:22;;;2719:20;8345:18;;;8338:76;8486:4;8543:22;;;2719:20;8503:18;;;8496:76;8649:4;8706:22;;;2719:20;8666:18;;;8659:76;8811:4;8868:22;;;2719:20;8828:18;;;8821:76;8984:4;9041:22;;;2719:20;9001:18;;;8994:76;9134:4;9191:22;;;2719:20;9151:18;;;9144:76;9286:4;9343:22;;;2719:20;9303:18;;;9296:76;9438:4;9495:22;;;2719:20;9455:18;;;9448:76;9592:4;9649:22;;;2719:20;9609:18;;;9602:76;9746:4;9783:70;9849:3;9825:22;;;9783:70;:::i;:::-;9763:18;;;9756:98;9928:4;9965:70;10031:3;10007:22;;;9965:70;:::i;:::-;9956:6;9949:5;9945:18;9938:98;10115:4;10152:71;10219:3;10115:4;10199:9;10195:22;10152:71;:::i;:::-;10143:6;10136:5;10132:18;10125:99;10334:71;10401:3;10297:4;10381:9;10377:22;10334:71;:::i;:::-;9928:4;10318:5;10314:18;10307:99;10519:71;10586:3;10482:4;10566:9;10562:22;10519:71;:::i;:::-;10510:6;10503:5;10499:18;10492:99;10695:71;10762:3;10658:4;10742:9;10738:22;10695:71;:::i;:::-;10686:6;10679:5;10675:18;10668:99;10887:71;10954:3;10850:4;10934:9;10930:22;10887:71;:::i;:::-;10867:18;;;10860:99;-1:-1;10871:5;23089:204;-1:-1;;;23089:204::o;23300:286::-;;23426:3;23414:9;23405:7;23401:23;23397:33;23394:2;;;-1:-1;;23433:12;23394:2;23495:75;23562:7;23538:22;23495:75;:::i;23593:290::-;;23721:3;;23709:9;23700:7;23696:23;23692:33;23689:2;;;-1:-1;;23728:12;23689:2;12751:22;23721:3;12751:22;:::i;:::-;12870:74;12940:3;12916:22;12870:74;:::i;:::-;12845:100;;13012:2;13066:22;;;16030:20;13027:16;;;13020:75;13169:2;13223:22;;;16030:20;13184:16;;;13177:75;13321:2;13375:22;;;16030:20;13336:16;;;13329:75;13473:3;13528:22;;;16030:20;13489:16;;;13482:75;13629:3;13684:22;;;16030:20;13645:16;;;13638:75;13783:3;13838:22;;;16030:20;13799:16;;;13792:75;13941:3;13995:22;;;2719:20;13957:16;;;13950:74;14096:3;14152:22;;;2719:20;14112:18;;;14105:76;14248:3;14304:22;;;2719:20;14264:18;;;14257:76;14409:3;14465:22;;;2719:20;14425:18;;;14418:76;14576:3;14632:22;;;2719:20;14592:18;;;14585:76;14743:3;14799:22;;;2719:20;14759:18;;;14752:76;14915:3;14971:22;;;2719:20;14931:18;;;14924:76;15071:3;15127:22;;;2719:20;15087:18;;;15080:76;15229:3;15285:22;;;2719:20;15245:18;;;15238:76;15379:3;15435:22;;;2719:20;15395:18;;;15388:76;15538:3;15594:22;;;2719:20;15554:18;;;15547:76;15692:3;15748:22;;;2719:20;15708:18;;;15701:76;15850:3;15906:22;;;2719:20;15866:18;;;15859:76;;;;-1:-1;12852:16;;23683:200;-1:-1;;23683:200::o;23890:699::-;;;;;24086:3;24074:9;24065:7;24061:23;24057:33;24054:2;;;-1:-1;;24093:12;24054:2;16043:6;16030:20;24145:63;;24263:80;24335:7;24245:2;24315:9;24311:22;24263:80;:::i;25848:162::-;52643:1;52636:5;52633:12;52623:2;;52649:9;52623:2;25932:73;;25926:84::o;38344:370::-;38521:2;38535:47;;;49729:12;;38506:18;;;50133:19;;;38344:370;;38521:2;49583:14;;;;50173;;;;38344:370;25217:260;25242:6;25239:1;25236:13;25217:260;;;25303:13;;25679:37;;49988:14;;;;24750;;;;25264:1;25257:9;25217:260;;;-1:-1;38588:116;;38492:222;-1:-1;;;;;;38492:222::o;38721:210::-;50537:13;;50530:21;25572:34;;38842:2;38827:18;;38813:118::o;38938:222::-;25679:37;;;39065:2;39050:18;;39036:124::o;39167:254::-;39310:2;39295:18;;52759:2;52749:13;;52739:2;;52766:9;52739:2;26104:66;;;39281:140;:::o;39428:270::-;39579:2;39564:18;;52884:1;52874:12;;52864:2;;52890:9;39705:359;39873:2;39858:18;;52997:2;52987:13;;52977:2;;53004:9;52977:2;26447:63;;;40050:2;40035:18;25679:37;39844:220;:::o;40296:310::-;;40443:2;;40464:17;40457:47;26891:5;49729:12;50145:6;40443:2;40432:9;40428:18;50133:19;-1:-1;52240:101;52254:6;52251:1;52248:13;52240:101;;;52321:11;;;;;52315:18;52302:11;;;50173:14;52302:11;52295:39;52269:10;;52240:101;;;52356:6;52353:1;52350:13;52347:2;;;-1:-1;50173:14;52412:6;40432:9;52403:16;;52396:27;52347:2;-1:-1;52528:7;52512:14;-1:-1;;52508:28;27049:39;;;;50173:14;27049:39;;40414:192;-1:-1;;;40414:192::o;40613:416::-;40813:2;40827:47;;;27325:2;40798:18;;;50133:19;27361:34;50173:14;;;27341:55;-1:-1;;;27416:12;;;27409:38;27466:12;;;40784:245::o;41036:416::-;41236:2;41250:47;;;27717:2;41221:18;;;50133:19;27753:34;50173:14;;;27733:55;-1:-1;;;27808:12;;;27801:38;27858:12;;;41207:245::o;41459:416::-;41659:2;41673:47;;;28109:2;41644:18;;;50133:19;28145:34;50173:14;;;28125:55;-1:-1;;;28200:12;;;28193:37;28249:12;;;41630:245::o;41882:416::-;42082:2;42096:47;;;28500:2;42067:18;;;50133:19;28536:34;50173:14;;;28516:55;-1:-1;;;28591:12;;;28584:45;28648:12;;;42053:245::o;42305:416::-;42505:2;42519:47;;;28899:2;42490:18;;;50133:19;28935:29;50173:14;;;28915:50;28984:12;;;42476:245::o;42728:416::-;42928:2;42942:47;;;29235:2;42913:18;;;50133:19;29271:34;50173:14;;;29251:55;-1:-1;;;29326:12;;;29319:42;29380:12;;;42899:245::o;43151:416::-;43351:2;43365:47;;;29631:2;43336:18;;;50133:19;29667:34;50173:14;;;29647:55;-1:-1;;;29722:12;;;29715:25;29759:12;;;43322:245::o;43574:416::-;43774:2;43788:47;;;30010:2;43759:18;;;50133:19;30046:34;50173:14;;;30026:55;-1:-1;;;30101:12;;;30094:44;30157:12;;;43745:245::o;43997:416::-;44197:2;44211:47;;;30408:2;44182:18;;;50133:19;30444:34;50173:14;;;30424:55;-1:-1;;;30499:12;;;30492:31;30542:12;;;44168:245::o;44420:416::-;44620:2;44634:47;;;30793:2;44605:18;;;50133:19;30829:34;50173:14;;;30809:55;30898:27;30884:12;;;30877:49;30945:12;;;44591:245::o;44843:416::-;45043:2;45057:47;;;31196:2;45028:18;;;50133:19;31232:34;50173:14;;;31212:55;-1:-1;;;31287:12;;;31280:41;31340:12;;;45014:245::o;45266:416::-;45466:2;45480:47;;;31591:2;45451:18;;;50133:19;31627:34;50173:14;;;31607:55;-1:-1;;;31682:12;;;31675:31;31725:12;;;45437:245::o;45689:416::-;45889:2;45903:47;;;31976:2;45874:18;;;50133:19;32012:34;50173:14;;;31992:55;-1:-1;;;32067:12;;;32060:31;32110:12;;;45860:245::o;46112:416::-;46312:2;46326:47;;;32361:2;46297:18;;;50133:19;32397:34;50173:14;;;32377:55;-1:-1;;;32452:12;;;32445:30;32494:12;;;46283:245::o;46535:416::-;46735:2;46749:47;;;32745:2;46720:18;;;50133:19;32781:34;50173:14;;;32761:55;32850:25;32836:12;;;32829:47;32895:12;;;46706:245::o;46958:416::-;47158:2;47172:47;;;33146:2;47143:18;;;50133:19;33182:34;50173:14;;;33162:55;33251:34;33237:12;;;33230:56;-1:-1;;;33306:12;;;33299:29;33347:12;;;47129:245::o;47381:416::-;47581:2;47595:47;;;33598:2;47566:18;;;50133:19;33634:34;50173:14;;;33614:55;-1:-1;;;33689:12;;;33682:46;33747:12;;;47552:245::o;47804:416::-;48004:2;48018:47;;;33998:2;47989:18;;;50133:19;34034:34;50173:14;;;34014:55;-1:-1;;;34089:12;;;34082:28;34129:12;;;47975:245::o;48227:416::-;48427:2;48441:47;;;34380:2;48412:18;;;50133:19;34416:34;50173:14;;;34396:55;-1:-1;;;34471:12;;;34464:28;34511:12;;;48398:245::o;48650:319::-;;48825:3;48814:9;48810:19;48802:27;;34825:86;34896:14;34802:16;34796:23;34825:86;:::i;:::-;34996:4;34985:16;;;34979:23;35056:14;;;25679:37;35163:4;35152:16;;;35146:23;35223:14;;;25679:37;35325:4;35314:16;;;35308:23;35385:14;;;25679:37;35487:4;35476:16;;;35470:23;35547:14;;;25679:37;35652:4;35641:16;;;35635:23;35712:14;;;25679:37;35815:4;35804:16;;;35798:23;35875:14;;;25679:37;35982:4;35971:16;;;35965:23;36040:14;;;25679:37;36145:6;36134:18;;;36128:25;36205:16;;;25679:37;36307:6;36296:18;;;36290:25;36367:16;;;25679:37;36478:6;36467:18;;;36461:25;36538:16;;;25679:37;36655:6;36644:18;;;36638:25;36715:16;;;25679:37;36832:6;36821:18;;;36815:25;36892:16;;;25679:37;37014:6;37003:18;;;36997:25;37074:16;;;25679:37;37180:6;37169:18;;;37163:25;37240:16;;;25679:37;37348:6;37337:18;;;37331:25;37408:16;;;25679:37;37508:6;37497:18;;;37491:25;37568:16;;;25679:37;37677:6;37666:18;;;37660:25;37737:16;;;25679:37;37841:6;37830:18;;;37824:25;37901:16;;;25679:37;38009:6;37998:18;;;37992:25;38069:16;;;;25679:37;;;;48796:173;:::o;49205:256::-;49267:2;49261:9;49293:17;;;49368:18;49353:34;;49389:22;;;49350:62;49347:2;;;49425:1;;49415:12;49347:2;49267;49434:22;49245:216;;-1:-1;49245:216::o;53151:111::-;53232:5;50537:13;50530:21;53210:5;53207:32;53197:2;;53253:1;;53243:12;53197:2;53191:71;:::o;53521:108::-;53604:1;53597:5;53594:12;53584:2;;53620:1;;53610:12;53636:119;53730:1;53723:5;53720:12;53710:2;;53746:1;;53736:12;54254:110;54338:2;54331:5;54328:13;54318:2;;54355:1;;54345:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../../Core/Core.sol\";\nimport \"./IANNEngine.sol\";\nimport \"./ANNSTF.sol\";\nimport \"./ANNPOF.sol\";\n\n\n/**\n * @title ANNEngine\n * @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a ANN contract\n * @dev All numbers except unix timestamp are represented as multiple of 10 ** 18\n */\ncontract ANNEngine is Core, ANNSTF, ANNPOF, IANNEngine {\n\n    function contractType() external pure override returns (ContractType) {\n        return ContractType.ANN;\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        ANNTerms 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        ANNTerms 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     * todo implement annuity calculator\n     * @param terms terms of the contract\n     * @return initial state of the contract\n     */\n    function computeInitialState(ANNTerms calldata terms)\n        external\n        pure\n        override\n        returns (State memory)\n    {\n        State memory state;\n\n        state.contractPerformance = ContractPerformance.PF;\n        state.notionalScalingMultiplier = ONE_POINT_ZERO;\n        state.interestScalingMultiplier = ONE_POINT_ZERO;\n        state.statusDate = terms.statusDate;\n        state.maturityDate = terms.maturityDate;\n        state.notionalPrincipal = roleSign(terms.contractRole) * terms.notionalPrincipal;\n        state.nominalInterestRate = terms.nominalInterestRate;\n        state.accruedInterest = roleSign(terms.contractRole) * terms.accruedInterest;\n        state.feeAccrued = terms.feeAccrued;\n        // annuity calculator to be implemented\n        state.nextPrincipalRedemptionPayment = roleSign(terms.contractRole) * terms.nextPrincipalRedemptionPayment;\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     * todo rate reset, scaling, interest calculation base\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        ANNTerms 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        // initial exchange\n        if (isInSegment(terms.initialExchangeDate, segmentStart, segmentEnd)) {\n            events[index] = encodeEvent(EventType.IED, terms.initialExchangeDate);\n            index++;\n        }\n\n        // purchase\n        if (terms.purchaseDate != 0) {\n            if (isInSegment(terms.purchaseDate, segmentStart, segmentEnd)) {\n                events[index] = encodeEvent(EventType.PRD, terms.purchaseDate);\n                index++;\n            }\n        }\n\n        // principal redemption at maturity\n        if (isInSegment(terms.maturityDate, segmentStart, segmentEnd) == true)  {\n            events[index] = encodeEvent(EventType.MD, terms.maturityDate);\n            index++;\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        ANNTerms 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        // interest payment related (covers pre-repayment period only,\n        // starting with PRANX interest is paid following the PR schedule)\n        if (eventType == EventType.IP) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0) {\n                uint256[MAX_CYCLE_SIZE] memory interestPaymentSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfInterestPayment,\n                    terms.maturityDate,\n                    terms.cycleOfInterestPayment,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (interestPaymentSchedule[i] == 0) break;\n                    if (interestPaymentSchedule[i] <= terms.capitalizationEndDate) continue;\n                    if (isInSegment(interestPaymentSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.IP, interestPaymentSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // IPCI\n        if (eventType == EventType.IPCI) {\n            if (\n                terms.cycleAnchorDateOfInterestPayment != 0\n                && terms.capitalizationEndDate != 0\n                && terms.capitalizationEndDate < terms.cycleAnchorDateOfPrincipalRedemption\n            ) {\n                IPS memory cycleOfInterestCapitalization = terms.cycleOfInterestPayment;\n                cycleOfInterestCapitalization.s = S.SHORT;\n\n                uint256[MAX_CYCLE_SIZE] memory interestPaymentSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfInterestPayment,\n                    terms.capitalizationEndDate,\n                    cycleOfInterestCapitalization,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (interestPaymentSchedule[i] == 0) break;\n                    if (isInSegment(interestPaymentSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.IPCI, interestPaymentSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // fees\n        if (eventType == EventType.FP) {\n            if (terms.cycleAnchorDateOfFee != 0) {\n                uint256[MAX_CYCLE_SIZE] memory feeSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfFee,\n                    terms.maturityDate,\n                    terms.cycleOfFee,\n                    terms.endOfMonthConvention,\n                    true,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (feeSchedule[i] == 0) break;\n                    if (isInSegment(feeSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.FP, feeSchedule[i]);\n                    index++;\n                }\n            }\n        }\n\n        // principal redemption\n        if (eventType == EventType.PR) {\n            if (terms.cycleAnchorDateOfPrincipalRedemption != 0) {\n                uint256[MAX_CYCLE_SIZE] memory principalRedemptionSchedule = computeDatesFromCycleSegment(\n                    terms.cycleAnchorDateOfPrincipalRedemption,\n                    terms.maturityDate,\n                    terms.cycleOfPrincipalRedemption,\n                    terms.endOfMonthConvention,\n                    false,\n                    segmentStart,\n                    segmentEnd\n                );\n                for (uint8 i = 0; i < MAX_CYCLE_SIZE; i++) {\n                    if (principalRedemptionSchedule[i] == 0) break;\n                    if (isInSegment(principalRedemptionSchedule[i], segmentStart, segmentEnd) == false) continue;\n                    events[index] = encodeEvent(EventType.PR, principalRedemptionSchedule[i]);\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        ANNTerms calldata terms,\n        uint256 lastScheduleTime,\n        EventType eventType\n    )\n        external\n        pure\n        override\n        returns(bytes32)\n    {\n        // IP\n        // interest payment related (starting with PRANX interest is paid following the PR schedule)\n        if (eventType == EventType.IP) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0) {\n                uint256 nextInterestPaymentDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfInterestPayment,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfInterestPayment,\n                    lastScheduleTime\n                );\n                if (nextInterestPaymentDate == 0) return bytes32(0);\n                if (nextInterestPaymentDate <= terms.capitalizationEndDate) return bytes32(0);\n                return encodeEvent(EventType.IP, nextInterestPaymentDate);\n            }\n        }\n\n        // IPCI\n        if (eventType == EventType.IPCI) {\n            if (terms.cycleAnchorDateOfInterestPayment != 0 && terms.capitalizationEndDate != 0) {\n                IPS memory cycleOfInterestCapitalization = terms.cycleOfInterestPayment;\n                cycleOfInterestCapitalization.s = S.SHORT;\n                uint256 nextInterestCapitalizationDate = computeNextCycleDateFromPrecedingDate(\n                    cycleOfInterestCapitalization,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfInterestPayment,\n                    lastScheduleTime\n                );\n                if (nextInterestCapitalizationDate == 0) return bytes32(0);\n                return encodeEvent(EventType.IPCI, nextInterestCapitalizationDate);\n            }\n        }\n\n        // fees\n        if (eventType == EventType.FP) {\n            if (terms.cycleAnchorDateOfFee != 0) {\n                uint256 nextFeeDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfFee,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfFee,\n                    lastScheduleTime\n                );\n                if (nextFeeDate == 0) return bytes32(0);\n                return encodeEvent(EventType.FP, nextFeeDate);\n            }\n        }\n\n        // principal redemption\n        if (eventType == EventType.PR) {\n            if (terms.cycleAnchorDateOfPrincipalRedemption != 0) {\n                uint256 nextPrincipalRedemptionDate = computeNextCycleDateFromPrecedingDate(\n                    terms.cycleOfPrincipalRedemption,\n                    terms.endOfMonthConvention,\n                    terms.cycleAnchorDateOfPrincipalRedemption,\n                    lastScheduleTime\n                );\n                if (nextPrincipalRedemptionDate == 0) return bytes32(0);\n                return encodeEvent(EventType.PR, nextPrincipalRedemptionDate);\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        ANNTerms 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        ANNTerms 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        /*\n         * Note:\n         * not supported: IPCB events, PRD (Purchase) events\n         */\n\n        if (eventType == EventType.AD) return STF_ANN_AD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.FP) return STF_ANN_FP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IED) return STF_ANN_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IPCI) return STF_ANN_IPCI(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IP) return STF_ANN_IP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PP) return STF_ANN_PP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PR) return STF_ANN_PR(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.MD) return STF_ANN_MD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PY) return STF_ANN_PY(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RRF) return STF_ANN_RRF(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.RR) return STF_ANN_RR(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.SC) return STF_ANN_SC(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return STF_ANN_TD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.CE) return STF_ANN_CE(terms, state, scheduleTime, externalData);\n\n        revert(\"ANNEngine.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     * todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\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 payoffFunction(\n        ANNTerms 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        /*\n         * Note: all ANN payoff functions that rely on NAM/LAM have been replaced by PAM\n         * actus-solidity currently doesn't support interestCalculationBase, thus we can use PAM\n         *\n         * There is a reference to a POF_ANN_PR function which was added because PAM doesn't have PR Events in ACTUS 1.0\n         * and NAM, which ANN refers to in the specification, is not yet supported\n         *\n         * not supported: IPCB events, PRD (Purchase) events\n         */\n\n        if (eventType == EventType.AD) return 0;\n        if (eventType == EventType.IPCI) return 0;\n        if (eventType == EventType.RRF) return 0;\n        if (eventType == EventType.RR) return 0;\n        if (eventType == EventType.SC) return 0;\n        if (eventType == EventType.CE) return 0;\n        if (eventType == EventType.FP) return POF_ANN_FP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IED) return POF_ANN_IED(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.IP) return POF_ANN_IP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PP) return POF_ANN_PP(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PR) return POF_ANN_PR(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.MD) return POF_ANN_MD(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.PY) return POF_ANN_PY(terms, state, scheduleTime, externalData);\n        if (eventType == EventType.TD) return POF_ANN_TD(terms, state, scheduleTime, externalData);\n\n        revert(\"ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\");\n    }\n}",
  "sourcePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNEngine.sol",
  "ast": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNEngine.sol",
    "exportedSymbols": {
      "ANNEngine": [
        26241
      ]
    },
    "id": 26242,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 24933,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:85"
      },
      {
        "id": 24934,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:85"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 24935,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 24036,
        "src": "101:29:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "./IANNEngine.sol",
        "id": 24936,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 28269,
        "src": "131:26:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol",
        "file": "./ANNSTF.sol",
        "id": 24937,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 28168,
        "src": "158:22:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNPOF.sol",
        "file": "./ANNPOF.sol",
        "id": 24938,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 26733,
        "src": "181:22:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24940,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "452:4:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 24941,
            "nodeType": "InheritanceSpecifier",
            "src": "452:4:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24942,
              "name": "ANNSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28167,
              "src": "458:6:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNSTF_$28167",
                "typeString": "contract ANNSTF"
              }
            },
            "id": 24943,
            "nodeType": "InheritanceSpecifier",
            "src": "458:6:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24944,
              "name": "ANNPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 26732,
              "src": "466:6:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNPOF_$26732",
                "typeString": "contract ANNPOF"
              }
            },
            "id": 24945,
            "nodeType": "InheritanceSpecifier",
            "src": "466:6:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24946,
              "name": "IANNEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28268,
              "src": "474:10:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IANNEngine_$28268",
                "typeString": "contract IANNEngine"
              }
            },
            "id": 24947,
            "nodeType": "InheritanceSpecifier",
            "src": "474:10:85"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          26732,
          28167,
          28268,
          32432
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 24939,
          "nodeType": "StructuredDocumentation",
          "src": "206:223:85",
          "text": " @title ANNEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a ANN contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 26241,
        "linearizedBaseContracts": [
          26241,
          28268,
          32432,
          26732,
          28167,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "ANNEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 24956,
              "nodeType": "Block",
              "src": "562:40:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 24953,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "579:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 24954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "ANN",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "579:16:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 24952,
                  "id": 24955,
                  "nodeType": "Return",
                  "src": "572:23:85"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 24957,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24949,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "530:8:85"
            },
            "parameters": {
              "id": 24948,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "513:2:85"
            },
            "returnParameters": {
              "id": 24952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24951,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24957,
                  "src": "548:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24950,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "548:12:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "547:14:85"
            },
            "scope": 26241,
            "src": "492:110:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28197
            ],
            "body": {
              "id": 24979,
              "nodeType": "Block",
              "src": "1251:141:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 24973,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24960,
                        "src": "1305:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24974,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24962,
                        "src": "1324:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24975,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24964,
                        "src": "1343:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24976,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24966,
                        "src": "1363:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 24972,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26075,
                      "src": "1268:23:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 24977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1268:117:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 24971,
                  "id": 24978,
                  "nodeType": "Return",
                  "src": "1261:124:85"
                }
              ]
            },
            "documentation": {
              "id": 24958,
              "nodeType": "StructuredDocumentation",
              "src": "608:403:85",
              "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": "acaed9d5",
            "id": 24980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24968,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1207:8:85"
            },
            "parameters": {
              "id": 24967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24960,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1055:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24959,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1055:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24962,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1088:20:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24961,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1088:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24964,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1118:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24963,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24966,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1142:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:123:85"
            },
            "returnParameters": {
              "id": 24971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24970,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1233:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24969,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1233:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1232:14:85"
            },
            "scope": 26241,
            "src": "1016:376:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28211
            ],
            "body": {
              "id": 25030,
              "nodeType": "Block",
              "src": "2006:504:85",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 25007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 25001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 24995,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2100:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 24996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22695,
                        "src": "2100:24:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2136:1:85",
                            "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": 24998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2128:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24997,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2128:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 25000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2128:10:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2100:38:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 25006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25002,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2142:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22693,
                        "src": "2142:14:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25004,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2160:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22695,
                        "src": "2160:24:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2142:42:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2100:84:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25022,
                  "nodeType": "IfStatement",
                  "src": "2096:282:85",
                  "trueBody": {
                    "id": 25021,
                    "nodeType": "Block",
                    "src": "2186:192:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25017,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24989,
                                  "src": "2353:12:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 25016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2346:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 25015,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2346:6:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2346:20:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25009,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24983,
                                  "src": "2239:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25010,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24985,
                                  "src": "2262:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25011,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24987,
                                  "src": "2285:6:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25012,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24989,
                                  "src": "2309:12:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 25008,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26240,
                                "src": "2207:14:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 25013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2207:128:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 25014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2207:138:85",
                            "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": 25019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2207:160:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 24994,
                        "id": 25020,
                        "nodeType": "Return",
                        "src": "2200:167:85"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25024,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24983,
                        "src": "2423:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25025,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24985,
                        "src": "2442:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25026,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24987,
                        "src": "2461:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25027,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24989,
                        "src": "2481:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 25023,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26240,
                      "src": "2395:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 25028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2395:108:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 24994,
                  "id": 25029,
                  "nodeType": "Return",
                  "src": "2388:115:85"
                }
              ]
            },
            "documentation": {
              "id": 24981,
              "nodeType": "StructuredDocumentation",
              "src": "1398:373:85",
              "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": "9485ba4e",
            "id": 25031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24991,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1968:8:85"
            },
            "parameters": {
              "id": 24990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24983,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1816:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24982,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1816:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24985,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1849:20:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24984,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1849:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24987,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1879:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24986,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24989,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1903:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24988,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1806:123:85"
            },
            "returnParameters": {
              "id": 24994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24993,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1994:6:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 24992,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1993:8:85"
            },
            "scope": 26241,
            "src": "1776:734:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28183
            ],
            "body": {
              "id": 25128,
              "nodeType": "Block",
              "src": "2872:777:85",
              "statements": [
                {
                  "assignments": [
                    25041
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25041,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25128,
                      "src": "2882:18:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 25040,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2882:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25042,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2882:18:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25043,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "2911:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25045,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "2911:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25046,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "2939:19:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 25047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2939:22:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "2911:50:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 25049,
                  "nodeType": "ExpressionStatement",
                  "src": "2911:50:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25050,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "2971:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25052,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22658,
                      "src": "2971:31:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 25053,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3005:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2971:48:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25055,
                  "nodeType": "ExpressionStatement",
                  "src": "2971:48:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25056,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3029:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25058,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "interestScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22656,
                      "src": "3029:31:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 25059,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3063:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3029:48:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25061,
                  "nodeType": "ExpressionStatement",
                  "src": "3029:48:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25062,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3087:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25064,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3087:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25065,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3106:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22701,
                      "src": "3106:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3087:35:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 25068,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:35:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25069,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3132:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22640,
                      "src": "3132:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25072,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3153:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25073,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22705,
                      "src": "3153:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3132:39:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 25075,
                  "nodeType": "ExpressionStatement",
                  "src": "3132:39:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25076,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3181:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25078,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "3181:23:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25080,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3216:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3216:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25079,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3207:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3207:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25083,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3238:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "notionalPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22721,
                        "src": "3238:23:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3207:54:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3181:80:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25087,
                  "nodeType": "ExpressionStatement",
                  "src": "3181:80:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25088,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3271:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "3271:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25091,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3299:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22723,
                      "src": "3299:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3271:53:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25094,
                  "nodeType": "ExpressionStatement",
                  "src": "3271:53:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25095,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3334:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25097,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3334:21:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25099,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3367:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3367:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25098,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3358:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3358:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25102,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3389:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "accruedInterest",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22725,
                        "src": "3389:21:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3358:52:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3334:76:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25106,
                  "nodeType": "ExpressionStatement",
                  "src": "3334:76:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25107,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3420:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25109,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3420:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25110,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3439:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22735,
                      "src": "3439:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3420:35:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25113,
                  "nodeType": "ExpressionStatement",
                  "src": "3420:35:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25114,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3513:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25116,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextPrincipalRedemptionPayment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22660,
                      "src": "3513:36:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25118,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3561:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3561:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25117,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3552:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3552:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25121,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3583:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nextPrincipalRedemptionPayment",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22745,
                        "src": "3583:36:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3552:67:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3513:106:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25125,
                  "nodeType": "ExpressionStatement",
                  "src": "3513:106:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25126,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25041,
                    "src": "3637:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 25039,
                  "id": 25127,
                  "nodeType": "Return",
                  "src": "3630:12:85"
                }
              ]
            },
            "documentation": {
              "id": 25032,
              "nodeType": "StructuredDocumentation",
              "src": "2516:215:85",
              "text": " @notice Initialize contract state space based on the contract terms.\n todo implement annuity calculator\n @param terms terms of the contract\n @return initial state of the contract"
            },
            "functionSelector": "30b126d7",
            "id": 25129,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25036,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2828:8:85"
            },
            "parameters": {
              "id": 25035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25034,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25129,
                  "src": "2765:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25033,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "2765:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2764:25:85"
            },
            "returnParameters": {
              "id": 25039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25038,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25129,
                  "src": "2854:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25037,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2854:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2853:14:85"
            },
            "scope": 26241,
            "src": "2736:913:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28224
            ],
            "body": {
              "id": 25260,
              "nodeType": "Block",
              "src": "4297:1036:85",
              "statements": [
                {
                  "assignments": [
                    25148
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25148,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "4307:46:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25146,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4307:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25147,
                        "length": {
                          "argumentTypes": null,
                          "id": 25145,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "4315:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "4307:32:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25149,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4307:46:85"
                },
                {
                  "assignments": [
                    25151
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25151,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "4363:12:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 25150,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "4363:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25152,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4363:12:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25154,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25132,
                          "src": "4430:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "initialExchangeDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22703,
                        "src": "4430:25:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25156,
                        "name": "segmentStart",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25134,
                        "src": "4457:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25157,
                        "name": "segmentEnd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25136,
                        "src": "4471:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 25153,
                      "name": "isInSegment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24667,
                      "src": "4418:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 25158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:64:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25174,
                  "nodeType": "IfStatement",
                  "src": "4414:185:85",
                  "trueBody": {
                    "id": 25173,
                    "nodeType": "Block",
                    "src": "4484:115:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25159,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "4498:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25161,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25160,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25151,
                              "src": "4505:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4498:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25163,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4526:9:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 25164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IED",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4526:13:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25165,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25132,
                                  "src": "4541:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialExchangeDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22703,
                                "src": "4541:25:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 25162,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4514:11:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 25167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4514:53:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4498:69:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25169,
                        "nodeType": "ExpressionStatement",
                        "src": "4498:69:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4581:7:85",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 25170,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25151,
                            "src": "4581:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 25172,
                        "nodeType": "ExpressionStatement",
                        "src": "4581:7:85"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25175,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25132,
                        "src": "4633:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "purchaseDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22707,
                      "src": "4633:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4655:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4633:23:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25202,
                  "nodeType": "IfStatement",
                  "src": "4629:236:85",
                  "trueBody": {
                    "id": 25201,
                    "nodeType": "Block",
                    "src": "4658:207:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25180,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25132,
                                "src": "4688:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "purchaseDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22707,
                              "src": "4688:18:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25182,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25134,
                              "src": "4708:12:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25183,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25136,
                              "src": "4722:10:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25179,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4676:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 25184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4676:57:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25200,
                        "nodeType": "IfStatement",
                        "src": "4672:183:85",
                        "trueBody": {
                          "id": 25199,
                          "nodeType": "Block",
                          "src": "4735:120:85",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 25185,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25148,
                                    "src": "4753:6:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 25187,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 25186,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25151,
                                    "src": "4760:5:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4753:13:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 25189,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4781:9:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 25190,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PRD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4781:13:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 25191,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25132,
                                        "src": "4796:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                          "typeString": "struct ANNTerms calldata"
                                        }
                                      },
                                      "id": 25192,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "purchaseDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22707,
                                      "src": "4796:18:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 25188,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4769:11:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 25193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4769:46:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4753:62:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 25195,
                              "nodeType": "ExpressionStatement",
                              "src": "4753:62:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4833:7:85",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 25196,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25151,
                                  "src": "4833:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 25198,
                              "nodeType": "ExpressionStatement",
                              "src": "4833:7:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 25210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 25204,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25132,
                            "src": "4935:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            }
                          },
                          "id": 25205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturityDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22705,
                          "src": "4935:18:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25206,
                          "name": "segmentStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25134,
                          "src": "4955:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25207,
                          "name": "segmentEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25136,
                          "src": "4969:10:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 25203,
                        "name": "isInSegment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24667,
                        "src": "4923:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 25208,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4923:57:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 25209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4984:4:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4923:65:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25226,
                  "nodeType": "IfStatement",
                  "src": "4919:179:85",
                  "trueBody": {
                    "id": 25225,
                    "nodeType": "Block",
                    "src": "4991:107:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25211,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "5005:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25213,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25212,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25151,
                              "src": "5012:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5005:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25215,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5033:9:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 25216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "MD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5033:12:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25217,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25132,
                                  "src": "5047:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "5047:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 25214,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "5021:11:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 25219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5021:45:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5005:61:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25221,
                        "nodeType": "ExpressionStatement",
                        "src": "5005:61:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "5080:7:85",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 25222,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25151,
                            "src": "5080:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 25224,
                        "nodeType": "ExpressionStatement",
                        "src": "5080:7:85"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    25231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25231,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "5159:25:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25229,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5159:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25230,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5159:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25235,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25151,
                        "src": "5201:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 25234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5187:13:85",
                      "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": 25232,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5191:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25233,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5191:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 25236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5187:20:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5159:48:85"
                },
                {
                  "body": {
                    "id": 25256,
                    "nodeType": "Block",
                    "src": "5253:48:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25248,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25231,
                              "src": "5267:8:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 25250,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25249,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25239,
                              "src": "5276:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5267:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25251,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "5281:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25253,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25252,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25239,
                              "src": "5288:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5281:9:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5267:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25255,
                        "nodeType": "ExpressionStatement",
                        "src": "5267:23:85"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25242,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25239,
                      "src": "5237:1:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 25243,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25151,
                      "src": "5241:5:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5237:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25257,
                  "initializationExpression": {
                    "assignments": [
                      25239
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 25239,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25257,
                        "src": "5222:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5222:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 25241,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5234:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5222:13:85"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 25246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5248:3:85",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 25245,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25239,
                        "src": "5248:1:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 25247,
                    "nodeType": "ExpressionStatement",
                    "src": "5248:3:85"
                  },
                  "nodeType": "ForStatement",
                  "src": "5217:84:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25258,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25231,
                    "src": "5318:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 25142,
                  "id": 25259,
                  "nodeType": "Return",
                  "src": "5311:15:85"
                }
              ]
            },
            "documentation": {
              "id": 25130,
              "nodeType": "StructuredDocumentation",
              "src": "3655:413:85",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n todo rate reset, scaling, interest calculation base\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": "c8352b79",
            "id": 25261,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25138,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4249:8:85"
            },
            "parameters": {
              "id": 25137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25132,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4123:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25131,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "4123:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25134,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4156:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4156:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25136,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4186:18:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4186:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4113:97:85"
            },
            "returnParameters": {
              "id": 25142,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25141,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4275:16:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 25139,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4275:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25140,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4275:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4274:18:85"
            },
            "scope": 26241,
            "src": "4073:1260:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28251
            ],
            "body": {
              "id": 25658,
              "nodeType": "Block",
              "src": "5989:4552:85",
              "statements": [
                {
                  "assignments": [
                    25282
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25282,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "5999:46:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25280,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25281,
                        "length": {
                          "argumentTypes": null,
                          "id": 25279,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "6007:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5999:32:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25283,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5999:46:85"
                },
                {
                  "assignments": [
                    25285
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25285,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "6055:13:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25284,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6055:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25286,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6055:13:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25287,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "6229:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25288,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6242:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6242:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6229:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25371,
                  "nodeType": "IfStatement",
                  "src": "6225:996:85",
                  "trueBody": {
                    "id": 25370,
                    "nodeType": "Block",
                    "src": "6256:965:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25291,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "6274:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22711,
                            "src": "6274:38:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6316:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6274:43:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25369,
                        "nodeType": "IfStatement",
                        "src": "6270:941:85",
                        "trueBody": {
                          "id": 25368,
                          "nodeType": "Block",
                          "src": "6319:892:85",
                          "statements": [
                            {
                              "assignments": [
                                25300
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25300,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25368,
                                  "src": "6337:54:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25298,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6337:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25299,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25297,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "6345:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "6337:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25314,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25302,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6444:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25303,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "6444:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25304,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6504:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "6504:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25306,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6544:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "6544:28:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25308,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6594:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "6594:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6642:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25311,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "6668:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25312,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "6702:10:85",
                                    "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": 25301,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6394:28:85",
                                  "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": 25313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6394:336:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6337:393:85"
                            },
                            {
                              "body": {
                                "id": 25366,
                                "nodeType": "Block",
                                "src": "6791:406:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25325,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25300,
                                          "src": "6817:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25327,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25326,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25316,
                                          "src": "6841:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6817:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6847:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6817:31:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25331,
                                    "nodeType": "IfStatement",
                                    "src": "6813:42:85",
                                    "trueBody": {
                                      "id": 25330,
                                      "nodeType": "Break",
                                      "src": "6850:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25337,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25332,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25300,
                                          "src": "6881:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25334,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25333,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25316,
                                          "src": "6905:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6881:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 25335,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25264,
                                          "src": "6911:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                            "typeString": "struct ANNTerms calldata"
                                          }
                                        },
                                        "id": 25336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "capitalizationEndDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22709,
                                        "src": "6911:27:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6881:57:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25339,
                                    "nodeType": "IfStatement",
                                    "src": "6877:71:85",
                                    "trueBody": {
                                      "id": 25338,
                                      "nodeType": "Continue",
                                      "src": "6940:8:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25341,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25300,
                                              "src": "6986:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25343,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25342,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25316,
                                              "src": "7010:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6986:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25344,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "7014:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25345,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "7028:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25340,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6974:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25346,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6974:65:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25347,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7043:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6974:74:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25350,
                                    "nodeType": "IfStatement",
                                    "src": "6970:88:85",
                                    "trueBody": {
                                      "id": 25349,
                                      "nodeType": "Continue",
                                      "src": "7050:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25351,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "7080:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25353,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25352,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "7087:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7080:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25355,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7108:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25356,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7108:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25357,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25300,
                                              "src": "7122:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25359,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25358,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25316,
                                              "src": "7146:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7122:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25354,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7096:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7096:53:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7080:69:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25362,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7080:69:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7171:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25363,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "7171:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25365,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7171:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25319,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25316,
                                  "src": "6766:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25320,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6770:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6766:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25367,
                              "initializationExpression": {
                                "assignments": [
                                  25316
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25316,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25367,
                                    "src": "6753:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25315,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6753:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25318,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6763:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6753:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6786:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25322,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25316,
                                    "src": "6786:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25324,
                                "nodeType": "ExpressionStatement",
                                "src": "6786:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "6748:449:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25372,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "7251:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25373,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "7264:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7264:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "7251:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25470,
                  "nodeType": "IfStatement",
                  "src": "7247:1240:85",
                  "trueBody": {
                    "id": 25469,
                    "nodeType": "Block",
                    "src": "7280:1207:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 25390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 25384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25376,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7315:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleAnchorDateOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22711,
                                "src": "7315:38:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7357:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7315:43:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25380,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7378:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "capitalizationEndDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22709,
                                "src": "7378:27:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7409:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7378:32:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7315:95:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25385,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25264,
                                "src": "7430:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22709,
                              "src": "7430:27:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25387,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25264,
                                "src": "7460:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfPrincipalRedemption",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22719,
                              "src": "7460:42:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7430:72:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7315:187:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25468,
                        "nodeType": "IfStatement",
                        "src": "7294:1183:85",
                        "trueBody": {
                          "id": 25467,
                          "nodeType": "Block",
                          "src": "7517:960:85",
                          "statements": [
                            {
                              "assignments": [
                                25392
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25392,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25467,
                                  "src": "7535:40:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 25391,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "7535:3:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25395,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25393,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7578:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22759,
                                "src": "7578:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7535:71:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25396,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25392,
                                    "src": "7624:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 25398,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "7624:31:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25399,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "7658:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 25400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7658:7:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "7624:41:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 25402,
                              "nodeType": "ExpressionStatement",
                              "src": "7624:41:85"
                            },
                            {
                              "assignments": [
                                25408
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25408,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25467,
                                  "src": "7684:54:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25406,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7684:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25407,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25405,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7692:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7684:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25421,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25410,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7791:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "7791:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25412,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7851:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "capitalizationEndDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22709,
                                    "src": "7851:27:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25414,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25392,
                                    "src": "7900:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25415,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7951:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "7951:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7999:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25418,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "8025:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25419,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "8059:10:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25409,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7741:28:85",
                                  "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": 25420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7741:346:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7684:403:85"
                            },
                            {
                              "body": {
                                "id": 25465,
                                "nodeType": "Block",
                                "src": "8148:315:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25436,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25432,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25408,
                                          "src": "8174:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25434,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25433,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25423,
                                          "src": "8198:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8174:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8204:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8174:31:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25438,
                                    "nodeType": "IfStatement",
                                    "src": "8170:42:85",
                                    "trueBody": {
                                      "id": 25437,
                                      "nodeType": "Break",
                                      "src": "8207:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25440,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25408,
                                              "src": "8250:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25442,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25441,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25423,
                                              "src": "8274:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8250:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25443,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "8278:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25444,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "8292:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25439,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8238:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25445,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8238:65:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25446,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8307:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8238:74:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25449,
                                    "nodeType": "IfStatement",
                                    "src": "8234:88:85",
                                    "trueBody": {
                                      "id": 25448,
                                      "nodeType": "Continue",
                                      "src": "8314:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25460,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25450,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "8344:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25452,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25451,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "8351:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8344:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25454,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8372:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25455,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IPCI",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8372:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25456,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25408,
                                              "src": "8388:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25458,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25457,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25423,
                                              "src": "8412:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8388:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25453,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8360:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8360:55:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8344:71:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25461,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8344:71:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25463,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8437:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25462,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "8437:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25464,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8437:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25426,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25423,
                                  "src": "8123:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25427,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8127:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8123:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25466,
                              "initializationExpression": {
                                "assignments": [
                                  25423
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25423,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25466,
                                    "src": "8110:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25422,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8110:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25425,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8120:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8110:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8143:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25429,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25423,
                                    "src": "8143:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25431,
                                "nodeType": "ExpressionStatement",
                                "src": "8143:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "8105:358:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25471,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "8517:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25472,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8530:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8530:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8517:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25547,
                  "nodeType": "IfStatement",
                  "src": "8513:819:85",
                  "trueBody": {
                    "id": 25546,
                    "nodeType": "Block",
                    "src": "8544:788:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25475,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "8562:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22717,
                            "src": "8562:26:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8592:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8562:31:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25545,
                        "nodeType": "IfStatement",
                        "src": "8558:764:85",
                        "trueBody": {
                          "id": 25544,
                          "nodeType": "Block",
                          "src": "8595:727:85",
                          "statements": [
                            {
                              "assignments": [
                                25484
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25484,
                                  "mutability": "mutable",
                                  "name": "feeSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25544,
                                  "src": "8613:42:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25482,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8613:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25483,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25481,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8621:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8613:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25498,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25486,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8708:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25487,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22717,
                                    "src": "8708:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25488,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8756:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "8756:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25490,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8796:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25491,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22765,
                                    "src": "8796:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25492,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8834:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "8834:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8882:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25495,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "8908:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25496,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "8942:10:85",
                                    "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": 25485,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8658:28:85",
                                  "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": 25497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8658:312:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8613:357:85"
                            },
                            {
                              "body": {
                                "id": 25542,
                                "nodeType": "Block",
                                "src": "9031:277:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25509,
                                          "name": "feeSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25484,
                                          "src": "9057:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25511,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25510,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25500,
                                          "src": "9069:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9057:14:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25512,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9075:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9057:19:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25515,
                                    "nodeType": "IfStatement",
                                    "src": "9053:30:85",
                                    "trueBody": {
                                      "id": 25514,
                                      "nodeType": "Break",
                                      "src": "9078:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25524,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25517,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25484,
                                              "src": "9121:11:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25519,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25518,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25500,
                                              "src": "9133:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9121:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25520,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "9137:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25521,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "9151:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25516,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9109:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25522,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9109:53:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9166:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9109:62:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25526,
                                    "nodeType": "IfStatement",
                                    "src": "9105:76:85",
                                    "trueBody": {
                                      "id": 25525,
                                      "nodeType": "Continue",
                                      "src": "9173:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25527,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "9203:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25529,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25528,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "9210:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9203:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25531,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9231:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25532,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "FP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9231:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25533,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25484,
                                              "src": "9245:11:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25535,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25534,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25500,
                                              "src": "9257:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9245:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25530,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9219:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9219:41:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9203:57:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25538,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9203:57:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9282:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25539,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "9282:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25541,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9282:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25503,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25500,
                                  "src": "9006:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25504,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9010:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9006:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25543,
                              "initializationExpression": {
                                "assignments": [
                                  25500
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25500,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25543,
                                    "src": "8993:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25499,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8993:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25502,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9003:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8993:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9026:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25506,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25500,
                                    "src": "9026:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25508,
                                "nodeType": "ExpressionStatement",
                                "src": "9026:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "8988:320:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25548,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "9378:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25549,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9391:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9391:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9378:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25624,
                  "nodeType": "IfStatement",
                  "src": "9374:932:85",
                  "trueBody": {
                    "id": 25623,
                    "nodeType": "Block",
                    "src": "9405:901:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25552,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "9423:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfPrincipalRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22719,
                            "src": "9423:42:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9469:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9423:47:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25622,
                        "nodeType": "IfStatement",
                        "src": "9419:877:85",
                        "trueBody": {
                          "id": 25621,
                          "nodeType": "Block",
                          "src": "9472:824:85",
                          "statements": [
                            {
                              "assignments": [
                                25561
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25561,
                                  "mutability": "mutable",
                                  "name": "principalRedemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25621,
                                  "src": "9490:58:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25559,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9490:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25560,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25558,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9498:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9490:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25575,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25563,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9601:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22719,
                                    "src": "9601:42:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25565,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9665:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "9665:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25567,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9705:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25568,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22767,
                                    "src": "9705:32:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25569,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9759:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "9759:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 25571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9807:5:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25572,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "9834:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25573,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "9868:10:85",
                                    "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": 25562,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9551:28:85",
                                  "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": 25574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9551:345:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9490:406:85"
                            },
                            {
                              "body": {
                                "id": 25619,
                                "nodeType": "Block",
                                "src": "9957:325:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25586,
                                          "name": "principalRedemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25561,
                                          "src": "9983:27:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25588,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25587,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25577,
                                          "src": "10011:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9983:30:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25589,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10017:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9983:35:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25592,
                                    "nodeType": "IfStatement",
                                    "src": "9979:46:85",
                                    "trueBody": {
                                      "id": 25591,
                                      "nodeType": "Break",
                                      "src": "10020:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25601,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25594,
                                              "name": "principalRedemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25561,
                                              "src": "10063:27:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25596,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25595,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25577,
                                              "src": "10091:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10063:30:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25597,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "10095:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25598,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "10109:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25593,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10051:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10051:69:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25600,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10124:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10051:78:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25603,
                                    "nodeType": "IfStatement",
                                    "src": "10047:92:85",
                                    "trueBody": {
                                      "id": 25602,
                                      "nodeType": "Continue",
                                      "src": "10131:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25614,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25604,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "10161:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25606,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25605,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "10168:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10161:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25608,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10189:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "PR",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10189:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25610,
                                              "name": "principalRedemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25561,
                                              "src": "10203:27:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25612,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25611,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25577,
                                              "src": "10231:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10203:30:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25607,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10177:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25613,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10177:57:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10161:73:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25615,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10161:73:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25617,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10256:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25616,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "10256:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25618,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10256:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25580,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25577,
                                  "src": "9932:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25581,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9936:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9932:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25620,
                              "initializationExpression": {
                                "assignments": [
                                  25577
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25577,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25620,
                                    "src": "9919:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25576,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9919:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25579,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9929:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9919:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9952:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25583,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25577,
                                    "src": "9952:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25585,
                                "nodeType": "ExpressionStatement",
                                "src": "9952:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "9914:368:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    25629
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25629,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "10367:25:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25627,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10367:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25628,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10367:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25635,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25633,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25285,
                        "src": "10409:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 25632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10395:13:85",
                      "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": 25630,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10399:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25631,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10399:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 25634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10395:20:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10367:48:85"
                },
                {
                  "body": {
                    "id": 25654,
                    "nodeType": "Block",
                    "src": "10461:48:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25646,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25629,
                              "src": "10475:8:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 25648,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25647,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25637,
                              "src": "10484:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10475:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25649,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25282,
                              "src": "10489:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25651,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25650,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25637,
                              "src": "10496:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10489:9:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10475:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25653,
                        "nodeType": "ExpressionStatement",
                        "src": "10475:23:85"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25640,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25637,
                      "src": "10445:1:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 25641,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25285,
                      "src": "10449:5:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10445:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25655,
                  "initializationExpression": {
                    "assignments": [
                      25637
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 25637,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25655,
                        "src": "10430:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10430:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 25639,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10442:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10430:13:85"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 25644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10456:3:85",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 25643,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25637,
                        "src": "10456:1:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 25645,
                    "nodeType": "ExpressionStatement",
                    "src": "10456:3:85"
                  },
                  "nodeType": "ForStatement",
                  "src": "10425:84:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25656,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25629,
                    "src": "10526:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 25276,
                  "id": 25657,
                  "nodeType": "Return",
                  "src": "10519:15:85"
                }
              ]
            },
            "documentation": {
              "id": 25262,
              "nodeType": "StructuredDocumentation",
              "src": "5339:395:85",
              "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": "0ecadea2",
            "id": 25659,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25272,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5941:8:85"
            },
            "parameters": {
              "id": 25271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25264,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5786:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25263,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "5786:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25266,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5819:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25265,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5819:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25268,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5849:18:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5849:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25270,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5877:19:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25269,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5877:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5776:126:85"
            },
            "returnParameters": {
              "id": 25276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25275,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5967:16:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 25273,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5967:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25274,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5967:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5966:18:85"
            },
            "scope": 26241,
            "src": "5739:4802:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28236
            ],
            "body": {
              "id": 25859,
              "nodeType": "Block",
              "src": "11107:2774:85",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25672,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "11236:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25673,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11249:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25674,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11249:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11236:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25720,
                  "nodeType": "IfStatement",
                  "src": "11232:661:85",
                  "trueBody": {
                    "id": 25719,
                    "nodeType": "Block",
                    "src": "11263:630:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25676,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "11281:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22711,
                            "src": "11281:38:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11323:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11281:43:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25718,
                        "nodeType": "IfStatement",
                        "src": "11277:606:85",
                        "trueBody": {
                          "id": 25717,
                          "nodeType": "Block",
                          "src": "11326:557:85",
                          "statements": [
                            {
                              "assignments": [
                                25681
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25681,
                                  "mutability": "mutable",
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25717,
                                  "src": "11344:31:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25680,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11344:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25691,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25683,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11437:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "11437:28:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25685,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11487:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "11487:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25687,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11535:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25688,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "11535:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25689,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "11595:16:85",
                                    "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": 25682,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11378:37:85",
                                  "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": 25690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11378:251:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11344:285:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25692,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25681,
                                  "src": "11651:23:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11678:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11651:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25700,
                              "nodeType": "IfStatement",
                              "src": "11647:51:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11696:1:85",
                                      "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": 25696,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11688:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25695,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11688:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11688:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25699,
                                "nodeType": "Return",
                                "src": "11681:17:85"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25701,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25681,
                                  "src": "11720:23:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25702,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25662,
                                    "src": "11747:5:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                      "typeString": "struct ANNTerms calldata"
                                    }
                                  },
                                  "id": 25703,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "capitalizationEndDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22709,
                                  "src": "11747:27:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11720:54:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25710,
                              "nodeType": "IfStatement",
                              "src": "11716:77:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11791:1:85",
                                      "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": 25706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11783:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25705,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11783:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11783:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25709,
                                "nodeType": "Return",
                                "src": "11776:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25712,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "11830:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11830:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25714,
                                    "name": "nextInterestPaymentDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25681,
                                    "src": "11844:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25711,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "11818:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11818:50:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25716,
                              "nodeType": "Return",
                              "src": "11811:57:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25721,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "11923:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25722,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11936:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11936:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11923:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25775,
                  "nodeType": "IfStatement",
                  "src": "11919:776:85",
                  "trueBody": {
                    "id": 25774,
                    "nodeType": "Block",
                    "src": "11952:743:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 25733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25725,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25662,
                                "src": "11970:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22711,
                              "src": "11970:38:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12012:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11970:43:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25729,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25662,
                                "src": "12017:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22709,
                              "src": "12017:27:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12048:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12017:32:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11970:79:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25773,
                        "nodeType": "IfStatement",
                        "src": "11966:719:85",
                        "trueBody": {
                          "id": 25772,
                          "nodeType": "Block",
                          "src": "12051:634:85",
                          "statements": [
                            {
                              "assignments": [
                                25735
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25735,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25772,
                                  "src": "12069:40:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 25734,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "12069:3:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25738,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25736,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25662,
                                  "src": "12112:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22759,
                                "src": "12112:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12069:71:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25739,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25735,
                                    "src": "12158:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 25741,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "12158:31:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25742,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "12192:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 25743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12192:7:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "12158:41:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 25745,
                              "nodeType": "ExpressionStatement",
                              "src": "12158:41:85"
                            },
                            {
                              "assignments": [
                                25747
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25747,
                                  "mutability": "mutable",
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25772,
                                  "src": "12217:38:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25746,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12217:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25756,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 25749,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25735,
                                    "src": "12317:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25750,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12368:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "12368:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25752,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12416:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25753,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "12416:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25754,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "12476:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25748,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12258:37:85",
                                  "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": 25755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12258:252:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12217:293:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25757,
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25747,
                                  "src": "12532:30:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12566:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12532:35:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25765,
                              "nodeType": "IfStatement",
                              "src": "12528:58:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25762,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12584:1:85",
                                      "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": 25761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12576:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25760,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12576:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12576:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25764,
                                "nodeType": "Return",
                                "src": "12569:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25767,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12623:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IPCI",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12623:14:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25769,
                                    "name": "nextInterestCapitalizationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25747,
                                    "src": "12639:30:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25766,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12611:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12611:59:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25771,
                              "nodeType": "Return",
                              "src": "12604:66:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25776,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "12725:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25777,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12738:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12738:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12725:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25814,
                  "nodeType": "IfStatement",
                  "src": "12721:494:85",
                  "trueBody": {
                    "id": 25813,
                    "nodeType": "Block",
                    "src": "12752:463:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25780,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "12770:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22717,
                            "src": "12770:26:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12800:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12770:31:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25812,
                        "nodeType": "IfStatement",
                        "src": "12766:439:85",
                        "trueBody": {
                          "id": 25811,
                          "nodeType": "Block",
                          "src": "12803:402:85",
                          "statements": [
                            {
                              "assignments": [
                                25785
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25785,
                                  "mutability": "mutable",
                                  "name": "nextFeeDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25811,
                                  "src": "12821:19:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25784,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12821:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25795,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25787,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12902:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22765,
                                    "src": "12902:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25789,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12940:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "12940:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25791,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12988:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22717,
                                    "src": "12988:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25793,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "13036:16:85",
                                    "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": 25786,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12843:37:85",
                                  "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": 25794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12843:227:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12821:249:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25796,
                                  "name": "nextFeeDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25785,
                                  "src": "13092:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13107:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13092:16:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25804,
                              "nodeType": "IfStatement",
                              "src": "13088:39:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13125:1:85",
                                      "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": 25800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13117:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25799,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13117:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13117:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25803,
                                "nodeType": "Return",
                                "src": "13110:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25806,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13164:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "FP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13164:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25808,
                                    "name": "nextFeeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25785,
                                    "src": "13178:11:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25805,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13152:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13152:38:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25810,
                              "nodeType": "Return",
                              "src": "13145:45:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25815,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "13261:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25816,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13274:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13274:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13261:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25853,
                  "nodeType": "IfStatement",
                  "src": "13257:590:85",
                  "trueBody": {
                    "id": 25852,
                    "nodeType": "Block",
                    "src": "13288:559:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25819,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "13306:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfPrincipalRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22719,
                            "src": "13306:42:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13352:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13306:47:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25851,
                        "nodeType": "IfStatement",
                        "src": "13302:535:85",
                        "trueBody": {
                          "id": 25850,
                          "nodeType": "Block",
                          "src": "13355:482:85",
                          "statements": [
                            {
                              "assignments": [
                                25824
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25824,
                                  "mutability": "mutable",
                                  "name": "nextPrincipalRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25850,
                                  "src": "13373:35:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25823,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13373:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25834,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25826,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13470:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22767,
                                    "src": "13470:32:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25828,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13524:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25829,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "13524:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25830,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13572:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22719,
                                    "src": "13572:42:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25832,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "13636:16:85",
                                    "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": 25825,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13411:37:85",
                                  "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": 25833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13411:259:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13373:297:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25835,
                                  "name": "nextPrincipalRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25824,
                                  "src": "13692:27:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13723:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13692:32:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25843,
                              "nodeType": "IfStatement",
                              "src": "13688:55:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25840,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13741:1:85",
                                      "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": 25839,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13733:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25838,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13733:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13733:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25842,
                                "nodeType": "Return",
                                "src": "13726:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25845,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13780:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PR",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13780:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25847,
                                    "name": "nextPrincipalRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25824,
                                    "src": "13794:27:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25844,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13768:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13768:54:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25849,
                              "nodeType": "Return",
                              "src": "13761:61:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 25856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13872:1:85",
                        "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": 25855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13864:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 25854,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13864:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 25857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13864:10:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 25671,
                  "id": 25858,
                  "nodeType": "Return",
                  "src": "13857:17:85"
                }
              ]
            },
            "documentation": {
              "id": 25660,
              "nodeType": "StructuredDocumentation",
              "src": "10547:345:85",
              "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": "2249a361",
            "id": 25860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25668,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11069:8:85"
            },
            "parameters": {
              "id": 25667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25662,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "10938:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25661,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "10938:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25664,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "10971:24:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25663,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10971:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25666,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "11005:19:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25665,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11005:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10928:102:85"
            },
            "returnParameters": {
              "id": 25671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25670,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "11094:7:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25669,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11094:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11093:9:85"
            },
            "scope": 26241,
            "src": "10897:2984:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28267
            ],
            "body": {
              "id": 25879,
              "nodeType": "Block",
              "src": "14769:28:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 25877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14786:4:85",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 25876,
                  "id": 25878,
                  "nodeType": "Return",
                  "src": "14779:11:85"
                }
              ]
            },
            "documentation": {
              "id": 25861,
              "nodeType": "StructuredDocumentation",
              "src": "13887:586:85",
              "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": "bd6b3082",
            "id": 25880,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25873,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14733:8:85"
            },
            "parameters": {
              "id": 25872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25863,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14513:7:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25862,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14513:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25865,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14543:17:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25864,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "14543:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25867,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14582:14:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25866,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14582:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25869,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14618:4:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 25868,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14618:4:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25871,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14652:14:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25870,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14652:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14503:191:85"
            },
            "returnParameters": {
              "id": 25876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25875,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14759:4:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 25874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14759:4:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14758:6:85"
            },
            "scope": 26241,
            "src": "14478:319:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 26074,
              "nodeType": "Block",
              "src": "15674:1668:85",
              "statements": [
                {
                  "assignments": [
                    25895,
                    25897
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25895,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26074,
                      "src": "15685:19:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 25894,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "15685:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25897,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26074,
                      "src": "15706:20:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25896,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15706:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25901,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25899,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25887,
                        "src": "15742:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 25898,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "15730:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 25900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15730:19:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15684:65:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25902,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "15866:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25903,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "15879:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15879:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "15866:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25913,
                  "nodeType": "IfStatement",
                  "src": "15862:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25907,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "15911:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25908,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "15918:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25909,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "15925:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25910,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "15939:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25906,
                        "name": "STF_ANN_AD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26847,
                        "src": "15900:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15900:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25912,
                    "nodeType": "Return",
                    "src": "15893:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25914,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "15966:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25915,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "15979:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25916,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15979:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "15966:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25925,
                  "nodeType": "IfStatement",
                  "src": "15962:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25919,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16011:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25920,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16018:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25921,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16025:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25922,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16039:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25918,
                        "name": "STF_ANN_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26926,
                        "src": "16000:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16000:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25924,
                    "nodeType": "Return",
                    "src": "15993:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25926,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16066:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25927,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16079:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16079:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16066:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25937,
                  "nodeType": "IfStatement",
                  "src": "16062:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25931,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16113:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25932,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16120:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25933,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16127:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25934,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16141:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25930,
                        "name": "STF_ANN_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27441,
                        "src": "16101:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16101:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25936,
                    "nodeType": "Return",
                    "src": "16094:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25938,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16168:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25939,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16181:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25940,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16181:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16168:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25949,
                  "nodeType": "IfStatement",
                  "src": "16164:94:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25943,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16217:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25944,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16224:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25945,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16231:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25946,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16245:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25942,
                        "name": "STF_ANN_IPCI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27541,
                        "src": "16204:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16204:54:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25948,
                    "nodeType": "Return",
                    "src": "16197:61:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25953,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25950,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16272:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25951,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16285:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25952,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16285:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16272:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25961,
                  "nodeType": "IfStatement",
                  "src": "16268:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25955,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16317:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25956,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16324:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25957,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16331:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25958,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16345:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25954,
                        "name": "STF_ANN_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27619,
                        "src": "16306:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25959,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16306:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25960,
                    "nodeType": "Return",
                    "src": "16299:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25962,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16372:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25963,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16385:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16385:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16372:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25973,
                  "nodeType": "IfStatement",
                  "src": "16368:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25967,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16417:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25968,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16424:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25969,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16431:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25970,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16445:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25966,
                        "name": "STF_ANN_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27017,
                        "src": "16406:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16406:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25972,
                    "nodeType": "Return",
                    "src": "16399:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25974,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16472:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25975,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16485:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16485:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16472:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25985,
                  "nodeType": "IfStatement",
                  "src": "16468:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25979,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16517:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25980,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16524:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25981,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16531:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25982,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16545:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25978,
                        "name": "STF_ANN_PR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27745,
                        "src": "16506:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16506:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25984,
                    "nodeType": "Return",
                    "src": "16499:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25986,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16572:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25987,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16585:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25988,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16585:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16572:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25997,
                  "nodeType": "IfStatement",
                  "src": "16568:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25991,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16617:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25992,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16624:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25993,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16631:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25994,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16645:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25990,
                        "name": "STF_ANN_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27848,
                        "src": "16606:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16606:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25996,
                    "nodeType": "Return",
                    "src": "16599:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25998,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16672:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25999,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16685:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16685:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16672:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26009,
                  "nodeType": "IfStatement",
                  "src": "16668:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26003,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16717:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26004,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16724:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26005,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16731:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26006,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16745:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26002,
                        "name": "STF_ANN_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27108,
                        "src": "16706:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16706:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26008,
                    "nodeType": "Return",
                    "src": "16699:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26010,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16772:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26011,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16785:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16785:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16772:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26021,
                  "nodeType": "IfStatement",
                  "src": "16768:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26015,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16819:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26016,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16826:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26017,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16833:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26018,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16847:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26014,
                        "name": "STF_ANN_RRF",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27206,
                        "src": "16807:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16807:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26020,
                    "nodeType": "Return",
                    "src": "16800:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26022,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16874:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26023,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16887:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26024,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16887:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16874:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26033,
                  "nodeType": "IfStatement",
                  "src": "16870:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26027,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16919:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26028,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16926:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26029,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16933:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26030,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16947:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26026,
                        "name": "STF_ANN_RR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28034,
                        "src": "16908:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16908:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26032,
                    "nodeType": "Return",
                    "src": "16901:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26034,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16974:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26035,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16987:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26036,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16987:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16974:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26045,
                  "nodeType": "IfStatement",
                  "src": "16970:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26039,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17019:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26040,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17026:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26041,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17033:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26042,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17047:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26038,
                        "name": "STF_ANN_SC",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28166,
                        "src": "17008:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26043,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17008:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26044,
                    "nodeType": "Return",
                    "src": "17001:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26046,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "17074:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26047,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17087:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17087:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17074:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26057,
                  "nodeType": "IfStatement",
                  "src": "17070:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26051,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17119:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26052,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17126:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26053,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17133:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26054,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17147:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26050,
                        "name": "STF_ANN_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27260,
                        "src": "17108:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26055,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17108:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26056,
                    "nodeType": "Return",
                    "src": "17101:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26058,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "17174:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26059,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17187:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26060,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17187:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17174:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26069,
                  "nodeType": "IfStatement",
                  "src": "17170:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26063,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17219:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26064,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17226:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26065,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17233:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26066,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17247:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26062,
                        "name": "STF_ANN_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27393,
                        "src": "17208:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17208:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26068,
                    "nodeType": "Return",
                    "src": "17201:59:85"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 26071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17278:56:85",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0c14b78486c907199f272596b170218e470e6da270fa89cf62ac28351f620bf",
                          "typeString": "literal_string \"ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d0c14b78486c907199f272596b170218e470e6da270fa89cf62ac28351f620bf",
                          "typeString": "literal_string \"ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 26070,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "17271:6:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 26072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17271:64:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26073,
                  "nodeType": "ExpressionStatement",
                  "src": "17271:64:85"
                }
              ]
            },
            "documentation": {
              "id": 25881,
              "nodeType": "StructuredDocumentation",
              "src": "14803:649:85",
              "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": 26075,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 25890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25883,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15499:21:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25882,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "15499:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25885,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15530:18:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25884,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15530:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25887,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15558:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25886,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15558:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25889,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15582:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25888,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15582:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15489:119:85"
            },
            "returnParameters": {
              "id": 25893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25892,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15656:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25891,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15656:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15655:14:85"
            },
            "scope": 26241,
            "src": "15457:1885:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26239,
              "nodeType": "Block",
              "src": "18184:1745:85",
              "statements": [
                {
                  "assignments": [
                    26090,
                    26092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26090,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26239,
                      "src": "18195:19:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 26089,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "18195:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 26092,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26239,
                      "src": "18216:20:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 26091,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18216:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26096,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 26094,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26082,
                        "src": "18252:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 26093,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "18240:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 26095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18240:19:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18194:65:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26097,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18771:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26098,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18784:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18784:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18771:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26103,
                  "nodeType": "IfStatement",
                  "src": "18767:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18805:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26102,
                    "nodeType": "Return",
                    "src": "18798:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26104,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18820:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26105,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18833:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18833:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18820:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26110,
                  "nodeType": "IfStatement",
                  "src": "18816:41:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18856:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26109,
                    "nodeType": "Return",
                    "src": "18849:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26111,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18871:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26112,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18884:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18884:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18871:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26117,
                  "nodeType": "IfStatement",
                  "src": "18867:40:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18906:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26116,
                    "nodeType": "Return",
                    "src": "18899:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26118,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18921:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26119,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18934:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18934:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18921:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26124,
                  "nodeType": "IfStatement",
                  "src": "18917:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18955:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26123,
                    "nodeType": "Return",
                    "src": "18948:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26125,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18970:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26126,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18983:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18983:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18970:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26131,
                  "nodeType": "IfStatement",
                  "src": "18966:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19004:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26130,
                    "nodeType": "Return",
                    "src": "18997:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26132,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19019:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26133,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19032:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19032:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19019:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26138,
                  "nodeType": "IfStatement",
                  "src": "19015:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19053:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26137,
                    "nodeType": "Return",
                    "src": "19046:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26139,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19068:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26140,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19081:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19081:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19068:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26150,
                  "nodeType": "IfStatement",
                  "src": "19064:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26144,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19113:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26145,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19120:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26146,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19127:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26147,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19141:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26143,
                        "name": "POF_ANN_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26326,
                        "src": "19102:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19102:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26149,
                    "nodeType": "Return",
                    "src": "19095:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26151,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19168:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26152,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19181:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19181:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19168:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26162,
                  "nodeType": "IfStatement",
                  "src": "19164:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26156,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19215:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26157,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19222:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26158,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19229:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26159,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19243:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26155,
                        "name": "POF_ANN_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26358,
                        "src": "19203:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19203:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26161,
                    "nodeType": "Return",
                    "src": "19196:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26163,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19270:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26164,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19283:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19283:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19270:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26174,
                  "nodeType": "IfStatement",
                  "src": "19266:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26168,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19315:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26169,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19322:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26170,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19329:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26171,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19343:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26167,
                        "name": "POF_ANN_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26424,
                        "src": "19304:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19304:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26173,
                    "nodeType": "Return",
                    "src": "19297:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26175,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19370:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26176,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19383:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19383:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19370:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26186,
                  "nodeType": "IfStatement",
                  "src": "19366:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26180,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19415:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26181,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19422:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26182,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19429:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26183,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19443:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26179,
                        "name": "POF_ANN_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26448,
                        "src": "19404:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26184,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19404:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26185,
                    "nodeType": "Return",
                    "src": "19397:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26187,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19470:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26188,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19483:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19483:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19470:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26198,
                  "nodeType": "IfStatement",
                  "src": "19466:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26192,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19515:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26193,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19522:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26194,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19529:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26195,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19543:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26191,
                        "name": "POF_ANN_PR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26731,
                        "src": "19504:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26196,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19504:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26197,
                    "nodeType": "Return",
                    "src": "19497:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26199,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19570:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26200,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19583:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19583:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19570:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26210,
                  "nodeType": "IfStatement",
                  "src": "19566:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26204,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19615:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26205,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19622:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26206,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19629:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26207,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19643:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26203,
                        "name": "POF_ANN_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26471,
                        "src": "19604:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26208,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19604:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26209,
                    "nodeType": "Return",
                    "src": "19597:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26211,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19670:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26212,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19683:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26213,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19683:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19670:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26222,
                  "nodeType": "IfStatement",
                  "src": "19666:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26216,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19715:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26217,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19722:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26218,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19729:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26219,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19743:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26215,
                        "name": "POF_ANN_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26570,
                        "src": "19704:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19704:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26221,
                    "nodeType": "Return",
                    "src": "19697:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26223,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19770:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26224,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19783:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19783:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19770:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26234,
                  "nodeType": "IfStatement",
                  "src": "19766:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26228,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19815:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26229,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19822:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26230,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19829:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26231,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19843:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26227,
                        "name": "POF_ANN_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26641,
                        "src": "19804:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19804:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26233,
                    "nodeType": "Return",
                    "src": "19797:59:85"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 26236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19874:47:85",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1fdd225bafdf9316c07e735e39ab1de13d95b2d0518cc8f69e5460760a5673d4",
                          "typeString": "literal_string \"ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1fdd225bafdf9316c07e735e39ab1de13d95b2d0518cc8f69e5460760a5673d4",
                          "typeString": "literal_string \"ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 26235,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "19867:6:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 26237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19867:55:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26238,
                  "nodeType": "ExpressionStatement",
                  "src": "19867:55:85"
                }
              ]
            },
            "documentation": {
              "id": 26076,
              "nodeType": "StructuredDocumentation",
              "src": "17348:629:85",
              "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 todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\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"
            },
            "id": 26240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26085,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26078,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18015:21:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26077,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "18015:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26080,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18046:18:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26079,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18046:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26082,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18074:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26081,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18074:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26084,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18098:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26083,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18098:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18005:119:85"
            },
            "returnParameters": {
              "id": 26088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26087,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18172:6:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 26086,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18172:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18171:8:85"
            },
            "scope": 26241,
            "src": "17982:1947:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 26242,
        "src": "430:19501:85"
      }
    ],
    "src": "41:19890:85"
  },
  "legacyAST": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNEngine.sol",
    "exportedSymbols": {
      "ANNEngine": [
        26241
      ]
    },
    "id": 26242,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 24933,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:85"
      },
      {
        "id": 24934,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:85"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 24935,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 24036,
        "src": "101:29:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/IANNEngine.sol",
        "file": "./IANNEngine.sol",
        "id": 24936,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 28269,
        "src": "131:26:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol",
        "file": "./ANNSTF.sol",
        "id": 24937,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 28168,
        "src": "158:22:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNPOF.sol",
        "file": "./ANNPOF.sol",
        "id": 24938,
        "nodeType": "ImportDirective",
        "scope": 26242,
        "sourceUnit": 26733,
        "src": "181:22:85",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24940,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "452:4:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 24941,
            "nodeType": "InheritanceSpecifier",
            "src": "452:4:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24942,
              "name": "ANNSTF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28167,
              "src": "458:6:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNSTF_$28167",
                "typeString": "contract ANNSTF"
              }
            },
            "id": 24943,
            "nodeType": "InheritanceSpecifier",
            "src": "458:6:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24944,
              "name": "ANNPOF",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 26732,
              "src": "466:6:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ANNPOF_$26732",
                "typeString": "contract ANNPOF"
              }
            },
            "id": 24945,
            "nodeType": "InheritanceSpecifier",
            "src": "466:6:85"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 24946,
              "name": "IANNEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28268,
              "src": "474:10:85",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IANNEngine_$28268",
                "typeString": "contract IANNEngine"
              }
            },
            "id": 24947,
            "nodeType": "InheritanceSpecifier",
            "src": "474:10:85"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931,
          26732,
          28167,
          28268,
          32432
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 24939,
          "nodeType": "StructuredDocumentation",
          "src": "206:223:85",
          "text": " @title ANNEngine\n @notice Inherits from BaseEngine by implementing STFs, POFs according to the ACTUS standard for a ANN contract\n @dev All numbers except unix timestamp are represented as multiple of 10 ** 18"
        },
        "fullyImplemented": true,
        "id": 26241,
        "linearizedBaseContracts": [
          26241,
          28268,
          32432,
          26732,
          28167,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "ANNEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              32431
            ],
            "body": {
              "id": 24956,
              "nodeType": "Block",
              "src": "562:40:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 24953,
                      "name": "ContractType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22559,
                      "src": "579:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                        "typeString": "type(enum ContractType)"
                      }
                    },
                    "id": 24954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "ANN",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "579:16:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "functionReturnParameters": 24952,
                  "id": 24955,
                  "nodeType": "Return",
                  "src": "572:23:85"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cb2ef6f7",
            "id": 24957,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contractType",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24949,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "530:8:85"
            },
            "parameters": {
              "id": 24948,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "513:2:85"
            },
            "returnParameters": {
              "id": 24952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24951,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24957,
                  "src": "548:12:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ContractType_$22559",
                    "typeString": "enum ContractType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24950,
                    "name": "ContractType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22559,
                    "src": "548:12:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractType_$22559",
                      "typeString": "enum ContractType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "547:14:85"
            },
            "scope": 26241,
            "src": "492:110:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28197
            ],
            "body": {
              "id": 24979,
              "nodeType": "Block",
              "src": "1251:141:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 24973,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24960,
                        "src": "1305:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24974,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24962,
                        "src": "1324:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24975,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24964,
                        "src": "1343:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 24976,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24966,
                        "src": "1363:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 24972,
                      "name": "stateTransitionFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26075,
                      "src": "1268:23:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (struct State memory)"
                      }
                    },
                    "id": 24977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1268:117:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 24971,
                  "id": 24978,
                  "nodeType": "Return",
                  "src": "1261:124:85"
                }
              ]
            },
            "documentation": {
              "id": 24958,
              "nodeType": "StructuredDocumentation",
              "src": "608:403:85",
              "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": "acaed9d5",
            "id": 24980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24968,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1207:8:85"
            },
            "parameters": {
              "id": 24967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24960,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1055:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24959,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1055:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24962,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1088:20:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24961,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1088:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24964,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1118:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24963,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24966,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1142:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24965,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1045:123:85"
            },
            "returnParameters": {
              "id": 24971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24970,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 24980,
                  "src": "1233:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24969,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1233:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1232:14:85"
            },
            "scope": 26241,
            "src": "1016:376:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28211
            ],
            "body": {
              "id": 25030,
              "nodeType": "Block",
              "src": "2006:504:85",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 25007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 25001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 24995,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2100:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 24996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22695,
                        "src": "2100:24:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2136:1:85",
                            "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": 24998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2128:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24997,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2128:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 25000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2128:10:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2100:38:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 25006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25002,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2142:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22693,
                        "src": "2142:14:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25004,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24983,
                          "src": "2160:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "settlementCurrency",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22695,
                        "src": "2160:24:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2142:42:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2100:84:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25022,
                  "nodeType": "IfStatement",
                  "src": "2096:282:85",
                  "trueBody": {
                    "id": 25021,
                    "nodeType": "Block",
                    "src": "2186:192:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25017,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24989,
                                  "src": "2353:12:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 25016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2346:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 25015,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2346:6:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2346:20:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25009,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24983,
                                  "src": "2239:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25010,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24985,
                                  "src": "2262:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25011,
                                  "name": "_event",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24987,
                                  "src": "2285:6:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25012,
                                  "name": "externalData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24989,
                                  "src": "2309:12:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                                    "typeString": "struct State calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 25008,
                                "name": "payoffFunction",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26240,
                                "src": "2207:14:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                                  "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                                }
                              },
                              "id": 25013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2207:128:85",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 25014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2207:138:85",
                            "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": 25019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2207:160:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 24994,
                        "id": 25020,
                        "nodeType": "Return",
                        "src": "2200:167:85"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25024,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24983,
                        "src": "2423:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25025,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24985,
                        "src": "2442:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25026,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24987,
                        "src": "2461:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25027,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24989,
                        "src": "2481:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 25023,
                      "name": "payoffFunction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26240,
                      "src": "2395:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct ANNTerms memory,struct State memory,bytes32,bytes32) pure returns (int256)"
                      }
                    },
                    "id": 25028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2395:108:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 24994,
                  "id": 25029,
                  "nodeType": "Return",
                  "src": "2388:115:85"
                }
              ]
            },
            "documentation": {
              "id": 24981,
              "nodeType": "StructuredDocumentation",
              "src": "1398:373:85",
              "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": "9485ba4e",
            "id": 25031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computePayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24991,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1968:8:85"
            },
            "parameters": {
              "id": 24990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24983,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1816:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24982,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "1816:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24985,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1849:20:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 24984,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1849:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24987,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1879:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24986,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1879:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24989,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1903:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 24988,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1806:123:85"
            },
            "returnParameters": {
              "id": 24994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24993,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25031,
                  "src": "1994:6:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 24992,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1993:8:85"
            },
            "scope": 26241,
            "src": "1776:734:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28183
            ],
            "body": {
              "id": 25128,
              "nodeType": "Block",
              "src": "2872:777:85",
              "statements": [
                {
                  "assignments": [
                    25041
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25041,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25128,
                      "src": "2882:18:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 25040,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "2882:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25042,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2882:18:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25043,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "2911:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25045,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "2911:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25046,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "2939:19:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 25047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2939:22:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "2911:50:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 25049,
                  "nodeType": "ExpressionStatement",
                  "src": "2911:50:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25050,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "2971:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25052,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22658,
                      "src": "2971:31:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 25053,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3005:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2971:48:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25055,
                  "nodeType": "ExpressionStatement",
                  "src": "2971:48:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25056,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3029:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25058,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "interestScalingMultiplier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22656,
                      "src": "3029:31:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 25059,
                      "name": "ONE_POINT_ZERO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22458,
                      "src": "3063:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3029:48:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25061,
                  "nodeType": "ExpressionStatement",
                  "src": "3029:48:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25062,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3087:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25064,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "3087:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25065,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3106:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22701,
                      "src": "3106:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3087:35:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 25068,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:35:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25069,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3132:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22640,
                      "src": "3132:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25072,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3153:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25073,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maturityDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22705,
                      "src": "3153:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3132:39:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 25075,
                  "nodeType": "ExpressionStatement",
                  "src": "3132:39:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25076,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3181:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25078,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "3181:23:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25080,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3216:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3216:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25079,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3207:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3207:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25083,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3238:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "notionalPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22721,
                        "src": "3238:23:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3207:54:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3181:80:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25087,
                  "nodeType": "ExpressionStatement",
                  "src": "3181:80:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25088,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3271:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "3271:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25091,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3299:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22723,
                      "src": "3299:25:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3271:53:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25094,
                  "nodeType": "ExpressionStatement",
                  "src": "3271:53:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25095,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3334:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25097,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3334:21:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25099,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3367:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3367:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25098,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3358:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3358:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25102,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3389:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "accruedInterest",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22725,
                        "src": "3389:21:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3358:52:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3334:76:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25106,
                  "nodeType": "ExpressionStatement",
                  "src": "3334:76:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25107,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3420:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25109,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3420:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25110,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25034,
                        "src": "3439:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22735,
                      "src": "3439:16:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3420:35:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25113,
                  "nodeType": "ExpressionStatement",
                  "src": "3420:35:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25114,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25041,
                        "src": "3513:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 25116,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextPrincipalRedemptionPayment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22660,
                      "src": "3513:36:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 25123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25118,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25034,
                              "src": "3561:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "3561:18:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 25117,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "3552:8:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 25120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3552:28:85",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25121,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25034,
                          "src": "3583:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nextPrincipalRedemptionPayment",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22745,
                        "src": "3583:36:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3552:67:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3513:106:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 25125,
                  "nodeType": "ExpressionStatement",
                  "src": "3513:106:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25126,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25041,
                    "src": "3637:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 25039,
                  "id": 25127,
                  "nodeType": "Return",
                  "src": "3630:12:85"
                }
              ]
            },
            "documentation": {
              "id": 25032,
              "nodeType": "StructuredDocumentation",
              "src": "2516:215:85",
              "text": " @notice Initialize contract state space based on the contract terms.\n todo implement annuity calculator\n @param terms terms of the contract\n @return initial state of the contract"
            },
            "functionSelector": "30b126d7",
            "id": 25129,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeInitialState",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25036,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2828:8:85"
            },
            "parameters": {
              "id": 25035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25034,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25129,
                  "src": "2765:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25033,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "2765:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2764:25:85"
            },
            "returnParameters": {
              "id": 25039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25038,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25129,
                  "src": "2854:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25037,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2854:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2853:14:85"
            },
            "scope": 26241,
            "src": "2736:913:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28224
            ],
            "body": {
              "id": 25260,
              "nodeType": "Block",
              "src": "4297:1036:85",
              "statements": [
                {
                  "assignments": [
                    25148
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25148,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "4307:46:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25146,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4307:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25147,
                        "length": {
                          "argumentTypes": null,
                          "id": 25145,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "4315:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "4307:32:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25149,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4307:46:85"
                },
                {
                  "assignments": [
                    25151
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25151,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "4363:12:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 25150,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "4363:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25152,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4363:12:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 25154,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25132,
                          "src": "4430:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                            "typeString": "struct ANNTerms calldata"
                          }
                        },
                        "id": 25155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "initialExchangeDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22703,
                        "src": "4430:25:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25156,
                        "name": "segmentStart",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25134,
                        "src": "4457:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 25157,
                        "name": "segmentEnd",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25136,
                        "src": "4471:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 25153,
                      "name": "isInSegment",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24667,
                      "src": "4418:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 25158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:64:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25174,
                  "nodeType": "IfStatement",
                  "src": "4414:185:85",
                  "trueBody": {
                    "id": 25173,
                    "nodeType": "Block",
                    "src": "4484:115:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25159,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "4498:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25161,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25160,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25151,
                              "src": "4505:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4498:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25163,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "4526:9:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 25164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IED",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4526:13:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25165,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25132,
                                  "src": "4541:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialExchangeDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22703,
                                "src": "4541:25:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 25162,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "4514:11:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 25167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4514:53:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4498:69:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25169,
                        "nodeType": "ExpressionStatement",
                        "src": "4498:69:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4581:7:85",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 25170,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25151,
                            "src": "4581:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 25172,
                        "nodeType": "ExpressionStatement",
                        "src": "4581:7:85"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25175,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25132,
                        "src": "4633:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                          "typeString": "struct ANNTerms calldata"
                        }
                      },
                      "id": 25176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "purchaseDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22707,
                      "src": "4633:18:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4655:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4633:23:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25202,
                  "nodeType": "IfStatement",
                  "src": "4629:236:85",
                  "trueBody": {
                    "id": 25201,
                    "nodeType": "Block",
                    "src": "4658:207:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25180,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25132,
                                "src": "4688:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "purchaseDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22707,
                              "src": "4688:18:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25182,
                              "name": "segmentStart",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25134,
                              "src": "4708:12:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25183,
                              "name": "segmentEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25136,
                              "src": "4722:10:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25179,
                            "name": "isInSegment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24667,
                            "src": "4676:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                            }
                          },
                          "id": 25184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4676:57:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25200,
                        "nodeType": "IfStatement",
                        "src": "4672:183:85",
                        "trueBody": {
                          "id": 25199,
                          "nodeType": "Block",
                          "src": "4735:120:85",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 25185,
                                    "name": "events",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25148,
                                    "src": "4753:6:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                      "typeString": "bytes32[120] memory"
                                    }
                                  },
                                  "id": 25187,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 25186,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25151,
                                    "src": "4760:5:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4753:13:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 25189,
                                        "name": "EventType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22610,
                                        "src": "4781:9:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                          "typeString": "type(enum EventType)"
                                        }
                                      },
                                      "id": 25190,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PRD",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4781:13:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 25191,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25132,
                                        "src": "4796:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                          "typeString": "struct ANNTerms calldata"
                                        }
                                      },
                                      "id": 25192,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "purchaseDate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22707,
                                      "src": "4796:18:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 25188,
                                    "name": "encodeEvent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24702,
                                    "src": "4769:11:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 25193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4769:46:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "4753:62:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 25195,
                              "nodeType": "ExpressionStatement",
                              "src": "4753:62:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4833:7:85",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 25196,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25151,
                                  "src": "4833:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 25198,
                              "nodeType": "ExpressionStatement",
                              "src": "4833:7:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 25210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 25204,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25132,
                            "src": "4935:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                              "typeString": "struct ANNTerms calldata"
                            }
                          },
                          "id": 25205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturityDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22705,
                          "src": "4935:18:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25206,
                          "name": "segmentStart",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25134,
                          "src": "4955:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25207,
                          "name": "segmentEnd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25136,
                          "src": "4969:10:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 25203,
                        "name": "isInSegment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24667,
                        "src": "4923:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 25208,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4923:57:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 25209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4984:4:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4923:65:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25226,
                  "nodeType": "IfStatement",
                  "src": "4919:179:85",
                  "trueBody": {
                    "id": 25225,
                    "nodeType": "Block",
                    "src": "4991:107:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25211,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "5005:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25213,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25212,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25151,
                              "src": "5012:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5005:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25215,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5033:9:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 25216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "MD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5033:12:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25217,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25132,
                                  "src": "5047:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "5047:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 25214,
                              "name": "encodeEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24702,
                              "src": "5021:11:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                              }
                            },
                            "id": 25219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5021:45:85",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5005:61:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25221,
                        "nodeType": "ExpressionStatement",
                        "src": "5005:61:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "5080:7:85",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 25222,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25151,
                            "src": "5080:5:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 25224,
                        "nodeType": "ExpressionStatement",
                        "src": "5080:7:85"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    25231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25231,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25260,
                      "src": "5159:25:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25229,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5159:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25230,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5159:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25235,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25151,
                        "src": "5201:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 25234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5187:13:85",
                      "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": 25232,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5191:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25233,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5191:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 25236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5187:20:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5159:48:85"
                },
                {
                  "body": {
                    "id": 25256,
                    "nodeType": "Block",
                    "src": "5253:48:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25248,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25231,
                              "src": "5267:8:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 25250,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25249,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25239,
                              "src": "5276:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5267:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25251,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25148,
                              "src": "5281:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25253,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25252,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25239,
                              "src": "5288:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5281:9:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5267:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25255,
                        "nodeType": "ExpressionStatement",
                        "src": "5267:23:85"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25242,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25239,
                      "src": "5237:1:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 25243,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25151,
                      "src": "5241:5:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "5237:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25257,
                  "initializationExpression": {
                    "assignments": [
                      25239
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 25239,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25257,
                        "src": "5222:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5222:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 25241,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5234:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5222:13:85"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 25246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5248:3:85",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 25245,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25239,
                        "src": "5248:1:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 25247,
                    "nodeType": "ExpressionStatement",
                    "src": "5248:3:85"
                  },
                  "nodeType": "ForStatement",
                  "src": "5217:84:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25258,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25231,
                    "src": "5318:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 25142,
                  "id": 25259,
                  "nodeType": "Return",
                  "src": "5311:15:85"
                }
              ]
            },
            "documentation": {
              "id": 25130,
              "nodeType": "StructuredDocumentation",
              "src": "3655:413:85",
              "text": " @notice Computes a schedule segment of non-cyclic contract events based on the contract terms\n and the specified timestamps.\n todo rate reset, scaling, interest calculation base\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": "c8352b79",
            "id": 25261,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNonCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25138,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4249:8:85"
            },
            "parameters": {
              "id": 25137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25132,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4123:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25131,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "4123:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25134,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4156:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4156:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25136,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4186:18:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4186:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4113:97:85"
            },
            "returnParameters": {
              "id": 25142,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25141,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25261,
                  "src": "4275:16:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 25139,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4275:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25140,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4275:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4274:18:85"
            },
            "scope": 26241,
            "src": "4073:1260:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28251
            ],
            "body": {
              "id": 25658,
              "nodeType": "Block",
              "src": "5989:4552:85",
              "statements": [
                {
                  "assignments": [
                    25282
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25282,
                      "mutability": "mutable",
                      "name": "events",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "5999:46:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                        "typeString": "bytes32[120]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25280,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5999:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25281,
                        "length": {
                          "argumentTypes": null,
                          "id": 25279,
                          "name": "MAX_EVENT_SCHEDULE_SIZE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22464,
                          "src": "6007:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "5999:32:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$120_storage_ptr",
                          "typeString": "bytes32[120]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25283,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5999:46:85"
                },
                {
                  "assignments": [
                    25285
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25285,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "6055:13:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25284,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6055:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25286,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6055:13:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25287,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "6229:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25288,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "6242:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6242:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "6229:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25371,
                  "nodeType": "IfStatement",
                  "src": "6225:996:85",
                  "trueBody": {
                    "id": 25370,
                    "nodeType": "Block",
                    "src": "6256:965:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25291,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "6274:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22711,
                            "src": "6274:38:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6316:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6274:43:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25369,
                        "nodeType": "IfStatement",
                        "src": "6270:941:85",
                        "trueBody": {
                          "id": 25368,
                          "nodeType": "Block",
                          "src": "6319:892:85",
                          "statements": [
                            {
                              "assignments": [
                                25300
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25300,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25368,
                                  "src": "6337:54:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25298,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6337:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25299,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25297,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "6345:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "6337:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25314,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25302,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6444:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25303,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "6444:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25304,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6504:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "6504:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25306,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6544:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "6544:28:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25308,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "6594:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "6594:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6642:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25311,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "6668:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25312,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "6702:10:85",
                                    "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": 25301,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "6394:28:85",
                                  "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": 25313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6394:336:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6337:393:85"
                            },
                            {
                              "body": {
                                "id": 25366,
                                "nodeType": "Block",
                                "src": "6791:406:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25325,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25300,
                                          "src": "6817:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25327,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25326,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25316,
                                          "src": "6841:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6817:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6847:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "6817:31:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25331,
                                    "nodeType": "IfStatement",
                                    "src": "6813:42:85",
                                    "trueBody": {
                                      "id": 25330,
                                      "nodeType": "Break",
                                      "src": "6850:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25337,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25332,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25300,
                                          "src": "6881:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25334,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25333,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25316,
                                          "src": "6905:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6881:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 25335,
                                          "name": "terms",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25264,
                                          "src": "6911:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                            "typeString": "struct ANNTerms calldata"
                                          }
                                        },
                                        "id": 25336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "capitalizationEndDate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22709,
                                        "src": "6911:27:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6881:57:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25339,
                                    "nodeType": "IfStatement",
                                    "src": "6877:71:85",
                                    "trueBody": {
                                      "id": 25338,
                                      "nodeType": "Continue",
                                      "src": "6940:8:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25348,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25341,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25300,
                                              "src": "6986:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25343,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25342,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25316,
                                              "src": "7010:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6986:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25344,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "7014:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25345,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "7028:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25340,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "6974:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25346,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6974:65:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25347,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7043:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "6974:74:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25350,
                                    "nodeType": "IfStatement",
                                    "src": "6970:88:85",
                                    "trueBody": {
                                      "id": 25349,
                                      "nodeType": "Continue",
                                      "src": "7050:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25351,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "7080:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25353,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25352,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "7087:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "7080:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25355,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "7108:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25356,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "7108:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25357,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25300,
                                              "src": "7122:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25359,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25358,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25316,
                                              "src": "7146:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7122:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25354,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "7096:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7096:53:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "7080:69:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25362,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7080:69:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7171:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25363,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "7171:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25365,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7171:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25319,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25316,
                                  "src": "6766:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25320,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "6770:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6766:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25367,
                              "initializationExpression": {
                                "assignments": [
                                  25316
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25316,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25367,
                                    "src": "6753:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25315,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6753:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25318,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6763:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6753:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6786:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25322,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25316,
                                    "src": "6786:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25324,
                                "nodeType": "ExpressionStatement",
                                "src": "6786:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "6748:449:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25372,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "7251:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25373,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "7264:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7264:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "7251:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25470,
                  "nodeType": "IfStatement",
                  "src": "7247:1240:85",
                  "trueBody": {
                    "id": 25469,
                    "nodeType": "Block",
                    "src": "7280:1207:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 25390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 25384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25376,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7315:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleAnchorDateOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22711,
                                "src": "7315:38:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7357:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7315:43:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25380,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7378:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "capitalizationEndDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22709,
                                "src": "7378:27:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7409:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7378:32:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "7315:95:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25385,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25264,
                                "src": "7430:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22709,
                              "src": "7430:27:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25387,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25264,
                                "src": "7460:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfPrincipalRedemption",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22719,
                              "src": "7460:42:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7430:72:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7315:187:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25468,
                        "nodeType": "IfStatement",
                        "src": "7294:1183:85",
                        "trueBody": {
                          "id": 25467,
                          "nodeType": "Block",
                          "src": "7517:960:85",
                          "statements": [
                            {
                              "assignments": [
                                25392
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25392,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25467,
                                  "src": "7535:40:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 25391,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "7535:3:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25395,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25393,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25264,
                                  "src": "7578:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22759,
                                "src": "7578:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7535:71:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25396,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25392,
                                    "src": "7624:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 25398,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "7624:31:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25399,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "7658:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 25400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7658:7:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "7624:41:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 25402,
                              "nodeType": "ExpressionStatement",
                              "src": "7624:41:85"
                            },
                            {
                              "assignments": [
                                25408
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25408,
                                  "mutability": "mutable",
                                  "name": "interestPaymentSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25467,
                                  "src": "7684:54:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25406,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7684:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25407,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25405,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "7692:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "7684:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25421,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25410,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7791:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "7791:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25412,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7851:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "capitalizationEndDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22709,
                                    "src": "7851:27:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25414,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25392,
                                    "src": "7900:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25415,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "7951:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25416,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "7951:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7999:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25418,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "8025:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25419,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "8059:10:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25409,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "7741:28:85",
                                  "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": 25420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7741:346:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7684:403:85"
                            },
                            {
                              "body": {
                                "id": 25465,
                                "nodeType": "Block",
                                "src": "8148:315:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25436,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25432,
                                          "name": "interestPaymentSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25408,
                                          "src": "8174:23:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25434,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25433,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25423,
                                          "src": "8198:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8174:26:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25435,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8204:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8174:31:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25438,
                                    "nodeType": "IfStatement",
                                    "src": "8170:42:85",
                                    "trueBody": {
                                      "id": 25437,
                                      "nodeType": "Break",
                                      "src": "8207:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25440,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25408,
                                              "src": "8250:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25442,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25441,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25423,
                                              "src": "8274:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8250:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25443,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "8278:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25444,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "8292:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25439,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "8238:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25445,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8238:65:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25446,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8307:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "8238:74:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25449,
                                    "nodeType": "IfStatement",
                                    "src": "8234:88:85",
                                    "trueBody": {
                                      "id": 25448,
                                      "nodeType": "Continue",
                                      "src": "8314:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25460,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25450,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "8344:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25452,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25451,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "8351:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "8344:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25454,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "8372:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25455,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "IPCI",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "8372:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25456,
                                              "name": "interestPaymentSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25408,
                                              "src": "8388:23:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25458,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25457,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25423,
                                              "src": "8412:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8388:26:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25453,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "8360:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8360:55:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "8344:71:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25461,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8344:71:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25463,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "8437:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25462,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "8437:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25464,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8437:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25426,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25423,
                                  "src": "8123:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25427,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "8127:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8123:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25466,
                              "initializationExpression": {
                                "assignments": [
                                  25423
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25423,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25466,
                                    "src": "8110:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25422,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8110:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25425,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8120:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8110:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "8143:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25429,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25423,
                                    "src": "8143:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25431,
                                "nodeType": "ExpressionStatement",
                                "src": "8143:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "8105:358:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25471,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "8517:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25472,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "8530:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8530:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "8517:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25547,
                  "nodeType": "IfStatement",
                  "src": "8513:819:85",
                  "trueBody": {
                    "id": 25546,
                    "nodeType": "Block",
                    "src": "8544:788:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25475,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "8562:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22717,
                            "src": "8562:26:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8592:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8562:31:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25545,
                        "nodeType": "IfStatement",
                        "src": "8558:764:85",
                        "trueBody": {
                          "id": 25544,
                          "nodeType": "Block",
                          "src": "8595:727:85",
                          "statements": [
                            {
                              "assignments": [
                                25484
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25484,
                                  "mutability": "mutable",
                                  "name": "feeSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25544,
                                  "src": "8613:42:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25482,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8613:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25483,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25481,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "8621:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "8613:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25498,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25486,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8708:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25487,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22717,
                                    "src": "8708:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25488,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8756:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "8756:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25490,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8796:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25491,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22765,
                                    "src": "8796:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25492,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "8834:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "8834:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 25494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8882:4:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25495,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "8908:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25496,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "8942:10:85",
                                    "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": 25485,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "8658:28:85",
                                  "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": 25497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8658:312:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8613:357:85"
                            },
                            {
                              "body": {
                                "id": 25542,
                                "nodeType": "Block",
                                "src": "9031:277:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25509,
                                          "name": "feeSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25484,
                                          "src": "9057:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25511,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25510,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25500,
                                          "src": "9069:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9057:14:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25512,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9075:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9057:19:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25515,
                                    "nodeType": "IfStatement",
                                    "src": "9053:30:85",
                                    "trueBody": {
                                      "id": 25514,
                                      "nodeType": "Break",
                                      "src": "9078:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25524,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25517,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25484,
                                              "src": "9121:11:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25519,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25518,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25500,
                                              "src": "9133:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9121:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25520,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "9137:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25521,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "9151:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25516,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "9109:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25522,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9109:53:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9166:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "9109:62:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25526,
                                    "nodeType": "IfStatement",
                                    "src": "9105:76:85",
                                    "trueBody": {
                                      "id": 25525,
                                      "nodeType": "Continue",
                                      "src": "9173:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25527,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "9203:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25529,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25528,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "9210:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "9203:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25531,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "9231:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25532,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "FP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "9231:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25533,
                                              "name": "feeSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25484,
                                              "src": "9245:11:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25535,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25534,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25500,
                                              "src": "9257:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9245:14:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25530,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "9219:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9219:41:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "9203:57:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25538,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9203:57:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9282:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25539,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "9282:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25541,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9282:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25503,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25500,
                                  "src": "9006:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25504,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9010:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9006:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25543,
                              "initializationExpression": {
                                "assignments": [
                                  25500
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25500,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25543,
                                    "src": "8993:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25499,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8993:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25502,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9003:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8993:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9026:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25506,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25500,
                                    "src": "9026:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25508,
                                "nodeType": "ExpressionStatement",
                                "src": "9026:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "8988:320:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25548,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25270,
                      "src": "9378:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25549,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "9391:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9391:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "9378:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25624,
                  "nodeType": "IfStatement",
                  "src": "9374:932:85",
                  "trueBody": {
                    "id": 25623,
                    "nodeType": "Block",
                    "src": "9405:901:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25552,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25264,
                              "src": "9423:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfPrincipalRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22719,
                            "src": "9423:42:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9469:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9423:47:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25622,
                        "nodeType": "IfStatement",
                        "src": "9419:877:85",
                        "trueBody": {
                          "id": 25621,
                          "nodeType": "Block",
                          "src": "9472:824:85",
                          "statements": [
                            {
                              "assignments": [
                                25561
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25561,
                                  "mutability": "mutable",
                                  "name": "principalRedemptionSchedule",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25621,
                                  "src": "9490:58:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                    "typeString": "uint256[120]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 25559,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9490:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25560,
                                    "length": {
                                      "argumentTypes": null,
                                      "id": 25558,
                                      "name": "MAX_CYCLE_SIZE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22461,
                                      "src": "9498:14:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "ArrayTypeName",
                                    "src": "9490:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$120_storage_ptr",
                                      "typeString": "uint256[120]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25575,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25563,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9601:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22719,
                                    "src": "9601:42:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25565,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9665:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maturityDate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22705,
                                    "src": "9665:18:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25567,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9705:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25568,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22767,
                                    "src": "9705:32:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25569,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25264,
                                      "src": "9759:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "9759:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 25571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9807:5:85",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25572,
                                    "name": "segmentStart",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25266,
                                    "src": "9834:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25573,
                                    "name": "segmentEnd",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25268,
                                    "src": "9868:10:85",
                                    "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": 25562,
                                  "name": "computeDatesFromCycleSegment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24588,
                                  "src": "9551:28:85",
                                  "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": 25574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9551:345:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                  "typeString": "uint256[120] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9490:406:85"
                            },
                            {
                              "body": {
                                "id": 25619,
                                "nodeType": "Block",
                                "src": "9957:325:85",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25586,
                                          "name": "principalRedemptionSchedule",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25561,
                                          "src": "9983:27:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                            "typeString": "uint256[120] memory"
                                          }
                                        },
                                        "id": 25588,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25587,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25577,
                                          "src": "10011:1:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9983:30:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 25589,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10017:1:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "9983:35:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25592,
                                    "nodeType": "IfStatement",
                                    "src": "9979:46:85",
                                    "trueBody": {
                                      "id": 25591,
                                      "nodeType": "Break",
                                      "src": "10020:5:85"
                                    }
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 25601,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25594,
                                              "name": "principalRedemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25561,
                                              "src": "10063:27:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25596,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25595,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25577,
                                              "src": "10091:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10063:30:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25597,
                                            "name": "segmentStart",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25266,
                                            "src": "10095:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 25598,
                                            "name": "segmentEnd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 25268,
                                            "src": "10109:10:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25593,
                                          "name": "isInSegment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24667,
                                          "src": "10051:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 25599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10051:69:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 25600,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10124:5:85",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "src": "10051:78:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 25603,
                                    "nodeType": "IfStatement",
                                    "src": "10047:92:85",
                                    "trueBody": {
                                      "id": 25602,
                                      "nodeType": "Continue",
                                      "src": "10131:8:85"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25614,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 25604,
                                          "name": "events",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25282,
                                          "src": "10161:6:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                            "typeString": "bytes32[120] memory"
                                          }
                                        },
                                        "id": 25606,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 25605,
                                          "name": "index",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25285,
                                          "src": "10168:5:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "10161:13:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 25608,
                                              "name": "EventType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 22610,
                                              "src": "10189:9:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                                "typeString": "type(enum EventType)"
                                              }
                                            },
                                            "id": 25609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "PR",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "10189:12:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 25610,
                                              "name": "principalRedemptionSchedule",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25561,
                                              "src": "10203:27:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$120_memory_ptr",
                                                "typeString": "uint256[120] memory"
                                              }
                                            },
                                            "id": 25612,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 25611,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 25577,
                                              "src": "10231:1:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10203:30:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_EventType_$22610",
                                              "typeString": "enum EventType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 25607,
                                          "name": "encodeEvent",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24702,
                                          "src": "10177:11:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 25613,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10177:57:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "10161:73:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 25615,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10161:73:85"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25617,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "10256:7:85",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 25616,
                                        "name": "index",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25285,
                                        "src": "10256:5:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25618,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10256:7:85"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25580,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25577,
                                  "src": "9932:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 25581,
                                  "name": "MAX_CYCLE_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22461,
                                  "src": "9936:14:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9932:18:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 25620,
                              "initializationExpression": {
                                "assignments": [
                                  25577
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 25577,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 25620,
                                    "src": "9919:7:85",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "typeName": {
                                      "id": 25576,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9919:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 25579,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9929:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "9919:11:85"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "9952:3:85",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 25583,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25577,
                                    "src": "9952:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 25585,
                                "nodeType": "ExpressionStatement",
                                "src": "9952:3:85"
                              },
                              "nodeType": "ForStatement",
                              "src": "9914:368:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    25629
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25629,
                      "mutability": "mutable",
                      "name": "schedule",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 25658,
                      "src": "10367:25:85",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 25627,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10367:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25628,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10367:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25635,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25633,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25285,
                        "src": "10409:5:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 25632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "10395:13:85",
                      "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": 25630,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10399:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25631,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10399:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 25634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10395:20:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10367:48:85"
                },
                {
                  "body": {
                    "id": 25654,
                    "nodeType": "Block",
                    "src": "10461:48:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25646,
                              "name": "schedule",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25629,
                              "src": "10475:8:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 25648,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25647,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25637,
                              "src": "10484:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10475:11:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25649,
                              "name": "events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25282,
                              "src": "10489:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$120_memory_ptr",
                                "typeString": "bytes32[120] memory"
                              }
                            },
                            "id": 25651,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25650,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25637,
                              "src": "10496:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10489:9:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10475:23:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 25653,
                        "nodeType": "ExpressionStatement",
                        "src": "10475:23:85"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 25642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25640,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25637,
                      "src": "10445:1:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 25641,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25285,
                      "src": "10449:5:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10445:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 25655,
                  "initializationExpression": {
                    "assignments": [
                      25637
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 25637,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25655,
                        "src": "10430:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10430:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 25639,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10442:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10430:13:85"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 25644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10456:3:85",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 25643,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25637,
                        "src": "10456:1:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 25645,
                    "nodeType": "ExpressionStatement",
                    "src": "10456:3:85"
                  },
                  "nodeType": "ForStatement",
                  "src": "10425:84:85"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 25656,
                    "name": "schedule",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 25629,
                    "src": "10526:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 25276,
                  "id": 25657,
                  "nodeType": "Return",
                  "src": "10519:15:85"
                }
              ]
            },
            "documentation": {
              "id": 25262,
              "nodeType": "StructuredDocumentation",
              "src": "5339:395:85",
              "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": "0ecadea2",
            "id": 25659,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeCyclicScheduleSegment",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25272,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5941:8:85"
            },
            "parameters": {
              "id": 25271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25264,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5786:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25263,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "5786:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25266,
                  "mutability": "mutable",
                  "name": "segmentStart",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5819:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25265,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5819:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25268,
                  "mutability": "mutable",
                  "name": "segmentEnd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5849:18:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5849:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25270,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5877:19:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25269,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "5877:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5776:126:85"
            },
            "returnParameters": {
              "id": 25276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25275,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25659,
                  "src": "5967:16:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 25273,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5967:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 25274,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5967:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5966:18:85"
            },
            "scope": 26241,
            "src": "5739:4802:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28236
            ],
            "body": {
              "id": 25859,
              "nodeType": "Block",
              "src": "11107:2774:85",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25672,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "11236:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25673,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11249:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25674,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11249:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11236:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25720,
                  "nodeType": "IfStatement",
                  "src": "11232:661:85",
                  "trueBody": {
                    "id": 25719,
                    "nodeType": "Block",
                    "src": "11263:630:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25676,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "11281:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfInterestPayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22711,
                            "src": "11281:38:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11323:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11281:43:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25718,
                        "nodeType": "IfStatement",
                        "src": "11277:606:85",
                        "trueBody": {
                          "id": 25717,
                          "nodeType": "Block",
                          "src": "11326:557:85",
                          "statements": [
                            {
                              "assignments": [
                                25681
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25681,
                                  "mutability": "mutable",
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25717,
                                  "src": "11344:31:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25680,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11344:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25691,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25683,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11437:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "11437:28:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25685,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11487:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "11487:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25687,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "11535:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25688,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "11535:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25689,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "11595:16:85",
                                    "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": 25682,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11378:37:85",
                                  "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": 25690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11378:251:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11344:285:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25692,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25681,
                                  "src": "11651:23:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11678:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11651:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25700,
                              "nodeType": "IfStatement",
                              "src": "11647:51:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11696:1:85",
                                      "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": 25696,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11688:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25695,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11688:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11688:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25699,
                                "nodeType": "Return",
                                "src": "11681:17:85"
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25701,
                                  "name": "nextInterestPaymentDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25681,
                                  "src": "11720:23:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25702,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25662,
                                    "src": "11747:5:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                      "typeString": "struct ANNTerms calldata"
                                    }
                                  },
                                  "id": 25703,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "capitalizationEndDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22709,
                                  "src": "11747:27:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11720:54:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25710,
                              "nodeType": "IfStatement",
                              "src": "11716:77:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11791:1:85",
                                      "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": 25706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11783:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25705,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11783:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11783:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25709,
                                "nodeType": "Return",
                                "src": "11776:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25712,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "11830:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11830:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25714,
                                    "name": "nextInterestPaymentDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25681,
                                    "src": "11844:23:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25711,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "11818:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11818:50:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25716,
                              "nodeType": "Return",
                              "src": "11811:57:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25721,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "11923:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25722,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "11936:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11936:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "11923:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25775,
                  "nodeType": "IfStatement",
                  "src": "11919:776:85",
                  "trueBody": {
                    "id": 25774,
                    "nodeType": "Block",
                    "src": "11952:743:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 25733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25725,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25662,
                                "src": "11970:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "cycleAnchorDateOfInterestPayment",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22711,
                              "src": "11970:38:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12012:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11970:43:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25729,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25662,
                                "src": "12017:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                  "typeString": "struct ANNTerms calldata"
                                }
                              },
                              "id": 25730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "capitalizationEndDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22709,
                              "src": "12017:27:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12048:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12017:32:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "11970:79:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25773,
                        "nodeType": "IfStatement",
                        "src": "11966:719:85",
                        "trueBody": {
                          "id": 25772,
                          "nodeType": "Block",
                          "src": "12051:634:85",
                          "statements": [
                            {
                              "assignments": [
                                25735
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25735,
                                  "mutability": "mutable",
                                  "name": "cycleOfInterestCapitalization",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25772,
                                  "src": "12069:40:85",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                    "typeString": "struct IPS"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 25734,
                                    "name": "IPS",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 22486,
                                    "src": "12069:3:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                                      "typeString": "struct IPS"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25738,
                              "initialValue": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25736,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25662,
                                  "src": "12112:5:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                    "typeString": "struct ANNTerms calldata"
                                  }
                                },
                                "id": 25737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cycleOfInterestPayment",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22759,
                                "src": "12112:28:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                  "typeString": "struct IPS calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12069:71:85"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25739,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25735,
                                    "src": "12158:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  "id": 25741,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "s",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22483,
                                  "src": "12158:31:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 25742,
                                    "name": "S",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22477,
                                    "src": "12192:1:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_S_$22477_$",
                                      "typeString": "type(enum S)"
                                    }
                                  },
                                  "id": 25743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SHORT",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12192:7:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_S_$22477",
                                    "typeString": "enum S"
                                  }
                                },
                                "src": "12158:41:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_S_$22477",
                                  "typeString": "enum S"
                                }
                              },
                              "id": 25745,
                              "nodeType": "ExpressionStatement",
                              "src": "12158:41:85"
                            },
                            {
                              "assignments": [
                                25747
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25747,
                                  "mutability": "mutable",
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25772,
                                  "src": "12217:38:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25746,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12217:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25756,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 25749,
                                    "name": "cycleOfInterestCapitalization",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25735,
                                    "src": "12317:29:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25750,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12368:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "12368:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25752,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12416:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25753,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfInterestPayment",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22711,
                                    "src": "12416:38:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25754,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "12476:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                                      "typeString": "struct IPS memory"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25748,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12258:37:85",
                                  "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": 25755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12258:252:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12217:293:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25757,
                                  "name": "nextInterestCapitalizationDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25747,
                                  "src": "12532:30:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12566:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12532:35:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25765,
                              "nodeType": "IfStatement",
                              "src": "12528:58:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25762,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12584:1:85",
                                      "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": 25761,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12576:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25760,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12576:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25763,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12576:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25764,
                                "nodeType": "Return",
                                "src": "12569:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25767,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "12623:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "IPCI",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12623:14:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25769,
                                    "name": "nextInterestCapitalizationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25747,
                                    "src": "12639:30:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25766,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "12611:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12611:59:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25771,
                              "nodeType": "Return",
                              "src": "12604:66:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25776,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "12725:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25777,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "12738:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12738:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "12725:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25814,
                  "nodeType": "IfStatement",
                  "src": "12721:494:85",
                  "trueBody": {
                    "id": 25813,
                    "nodeType": "Block",
                    "src": "12752:463:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25780,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "12770:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfFee",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22717,
                            "src": "12770:26:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12800:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12770:31:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25812,
                        "nodeType": "IfStatement",
                        "src": "12766:439:85",
                        "trueBody": {
                          "id": 25811,
                          "nodeType": "Block",
                          "src": "12803:402:85",
                          "statements": [
                            {
                              "assignments": [
                                25785
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25785,
                                  "mutability": "mutable",
                                  "name": "nextFeeDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25811,
                                  "src": "12821:19:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25784,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12821:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25795,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25787,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12902:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25788,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22765,
                                    "src": "12902:16:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25789,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12940:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "12940:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25791,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "12988:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22717,
                                    "src": "12988:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25793,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "13036:16:85",
                                    "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": 25786,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "12843:37:85",
                                  "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": 25794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12843:227:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12821:249:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25796,
                                  "name": "nextFeeDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25785,
                                  "src": "13092:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13107:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13092:16:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25804,
                              "nodeType": "IfStatement",
                              "src": "13088:39:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13125:1:85",
                                      "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": 25800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13117:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25799,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13117:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13117:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25803,
                                "nodeType": "Return",
                                "src": "13110:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25806,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13164:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "FP",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13164:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25808,
                                    "name": "nextFeeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25785,
                                    "src": "13178:11:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25805,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13152:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13152:38:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25810,
                              "nodeType": "Return",
                              "src": "13145:45:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25815,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25666,
                      "src": "13261:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25816,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "13274:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13274:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "13261:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25853,
                  "nodeType": "IfStatement",
                  "src": "13257:590:85",
                  "trueBody": {
                    "id": 25852,
                    "nodeType": "Block",
                    "src": "13288:559:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25819,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "13306:5:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                "typeString": "struct ANNTerms calldata"
                              }
                            },
                            "id": 25820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "cycleAnchorDateOfPrincipalRedemption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22719,
                            "src": "13306:42:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13352:1:85",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13306:47:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25851,
                        "nodeType": "IfStatement",
                        "src": "13302:535:85",
                        "trueBody": {
                          "id": 25850,
                          "nodeType": "Block",
                          "src": "13355:482:85",
                          "statements": [
                            {
                              "assignments": [
                                25824
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25824,
                                  "mutability": "mutable",
                                  "name": "nextPrincipalRedemptionDate",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25850,
                                  "src": "13373:35:85",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25823,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13373:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25834,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25826,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13470:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22767,
                                    "src": "13470:32:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_IPS_$22486_calldata_ptr",
                                      "typeString": "struct IPS calldata"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25828,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13524:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25829,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endOfMonthConvention",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22685,
                                    "src": "13524:26:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EndOfMonthConvention_$22580",
                                      "typeString": "enum EndOfMonthConvention"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25830,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25662,
                                      "src": "13572:5:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                                        "typeString": "struct ANNTerms calldata"
                                      }
                                    },
                                    "id": 25831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "cycleAnchorDateOfPrincipalRedemption",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22719,
                                    "src": "13572:42:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25832,
                                    "name": "lastScheduleTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25664,
                                    "src": "13636:16:85",
                                    "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": 25825,
                                  "name": "computeNextCycleDateFromPrecedingDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "13411:37:85",
                                  "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": 25833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13411:259:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13373:297:85"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25835,
                                  "name": "nextPrincipalRedemptionDate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25824,
                                  "src": "13692:27:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13723:1:85",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13692:32:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 25843,
                              "nodeType": "IfStatement",
                              "src": "13688:55:85",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 25840,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13741:1:85",
                                      "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": 25839,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13733:7:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 25838,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13733:7:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13733:10:85",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "functionReturnParameters": 25671,
                                "id": 25842,
                                "nodeType": "Return",
                                "src": "13726:17:85"
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 25845,
                                      "name": "EventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22610,
                                      "src": "13780:9:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                        "typeString": "type(enum EventType)"
                                      }
                                    },
                                    "id": 25846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PR",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13780:12:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25847,
                                    "name": "nextPrincipalRedemptionDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25824,
                                    "src": "13794:27:85",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_EventType_$22610",
                                      "typeString": "enum EventType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25844,
                                  "name": "encodeEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24702,
                                  "src": "13768:11:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 25848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13768:54:85",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 25671,
                              "id": 25849,
                              "nodeType": "Return",
                              "src": "13761:61:85"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 25856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13872:1:85",
                        "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": 25855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13864:7:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 25854,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13864:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 25857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13864:10:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 25671,
                  "id": 25858,
                  "nodeType": "Return",
                  "src": "13857:17:85"
                }
              ]
            },
            "documentation": {
              "id": 25660,
              "nodeType": "StructuredDocumentation",
              "src": "10547:345:85",
              "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": "2249a361",
            "id": 25860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25668,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11069:8:85"
            },
            "parameters": {
              "id": 25667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25662,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "10938:23:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25661,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "10938:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25664,
                  "mutability": "mutable",
                  "name": "lastScheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "10971:24:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25663,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10971:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25666,
                  "mutability": "mutable",
                  "name": "eventType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "11005:19:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_EventType_$22610",
                    "typeString": "enum EventType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25665,
                    "name": "EventType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22610,
                    "src": "11005:9:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10928:102:85"
            },
            "returnParameters": {
              "id": 25671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25670,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25860,
                  "src": "11094:7:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25669,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11094:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11093:9:85"
            },
            "scope": 26241,
            "src": "10897:2984:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              28267
            ],
            "body": {
              "id": 25879,
              "nodeType": "Block",
              "src": "14769:28:85",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 25877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14786:4:85",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 25876,
                  "id": 25878,
                  "nodeType": "Return",
                  "src": "14779:11:85"
                }
              ]
            },
            "documentation": {
              "id": 25861,
              "nodeType": "StructuredDocumentation",
              "src": "13887:586:85",
              "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": "bd6b3082",
            "id": 25880,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEventScheduled",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 25873,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14733:8:85"
            },
            "parameters": {
              "id": 25872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25863,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14513:7:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25862,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14513:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25865,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14543:17:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_calldata_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25864,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "14543:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25867,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14582:14:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25866,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14582:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25869,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14618:4:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 25868,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14618:4:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25871,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14652:14:85",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25870,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14652:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14503:191:85"
            },
            "returnParameters": {
              "id": 25876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25875,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25880,
                  "src": "14759:4:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 25874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14759:4:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14758:6:85"
            },
            "scope": 26241,
            "src": "14478:319:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 26074,
              "nodeType": "Block",
              "src": "15674:1668:85",
              "statements": [
                {
                  "assignments": [
                    25895,
                    25897
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 25895,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26074,
                      "src": "15685:19:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 25894,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "15685:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 25897,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26074,
                      "src": "15706:20:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 25896,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15706:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 25901,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 25899,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25887,
                        "src": "15742:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 25898,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "15730:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 25900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15730:19:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15684:65:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25902,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "15866:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25903,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "15879:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15879:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "15866:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25913,
                  "nodeType": "IfStatement",
                  "src": "15862:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25907,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "15911:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25908,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "15918:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25909,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "15925:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25910,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "15939:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25906,
                        "name": "STF_ANN_AD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26847,
                        "src": "15900:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15900:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25912,
                    "nodeType": "Return",
                    "src": "15893:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25914,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "15966:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25915,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "15979:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25916,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15979:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "15966:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25925,
                  "nodeType": "IfStatement",
                  "src": "15962:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25919,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16011:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25920,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16018:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25921,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16025:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25922,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16039:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25918,
                        "name": "STF_ANN_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26926,
                        "src": "16000:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16000:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25924,
                    "nodeType": "Return",
                    "src": "15993:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25926,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16066:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25927,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16079:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25928,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16079:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16066:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25937,
                  "nodeType": "IfStatement",
                  "src": "16062:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25931,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16113:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25932,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16120:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25933,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16127:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25934,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16141:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25930,
                        "name": "STF_ANN_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27441,
                        "src": "16101:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16101:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25936,
                    "nodeType": "Return",
                    "src": "16094:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25938,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16168:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25939,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16181:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25940,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16181:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16168:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25949,
                  "nodeType": "IfStatement",
                  "src": "16164:94:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25943,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16217:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25944,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16224:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25945,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16231:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25946,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16245:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25942,
                        "name": "STF_ANN_IPCI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27541,
                        "src": "16204:12:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16204:54:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25948,
                    "nodeType": "Return",
                    "src": "16197:61:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25953,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25950,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16272:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25951,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16285:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25952,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16285:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16272:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25961,
                  "nodeType": "IfStatement",
                  "src": "16268:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25955,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16317:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25956,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16324:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25957,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16331:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25958,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16345:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25954,
                        "name": "STF_ANN_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27619,
                        "src": "16306:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25959,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16306:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25960,
                    "nodeType": "Return",
                    "src": "16299:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25962,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16372:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25963,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16385:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16385:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16372:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25973,
                  "nodeType": "IfStatement",
                  "src": "16368:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25967,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16417:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25968,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16424:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25969,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16431:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25970,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16445:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25966,
                        "name": "STF_ANN_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27017,
                        "src": "16406:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16406:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25972,
                    "nodeType": "Return",
                    "src": "16399:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25974,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16472:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25975,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16485:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16485:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16472:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25985,
                  "nodeType": "IfStatement",
                  "src": "16468:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25979,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16517:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25980,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16524:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25981,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16531:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25982,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16545:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25978,
                        "name": "STF_ANN_PR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27745,
                        "src": "16506:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16506:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25984,
                    "nodeType": "Return",
                    "src": "16499:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 25989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25986,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16572:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25987,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16585:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 25988,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16585:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16572:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 25997,
                  "nodeType": "IfStatement",
                  "src": "16568:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 25991,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16617:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25992,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16624:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25993,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16631:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 25994,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16645:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 25990,
                        "name": "STF_ANN_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27848,
                        "src": "16606:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 25995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16606:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 25996,
                    "nodeType": "Return",
                    "src": "16599:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 25998,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16672:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 25999,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16685:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16685:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16672:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26009,
                  "nodeType": "IfStatement",
                  "src": "16668:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26003,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16717:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26004,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16724:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26005,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16731:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26006,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16745:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26002,
                        "name": "STF_ANN_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27108,
                        "src": "16706:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16706:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26008,
                    "nodeType": "Return",
                    "src": "16699:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26010,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16772:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26011,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16785:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16785:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16772:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26021,
                  "nodeType": "IfStatement",
                  "src": "16768:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26015,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16819:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26016,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16826:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26017,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16833:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26018,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16847:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26014,
                        "name": "STF_ANN_RRF",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27206,
                        "src": "16807:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16807:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26020,
                    "nodeType": "Return",
                    "src": "16800:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26022,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16874:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26023,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16887:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26024,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16887:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16874:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26033,
                  "nodeType": "IfStatement",
                  "src": "16870:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26027,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "16919:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26028,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "16926:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26029,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "16933:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26030,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "16947:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26026,
                        "name": "STF_ANN_RR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28034,
                        "src": "16908:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16908:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26032,
                    "nodeType": "Return",
                    "src": "16901:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26034,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "16974:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26035,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "16987:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26036,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16987:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "16974:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26045,
                  "nodeType": "IfStatement",
                  "src": "16970:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26039,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17019:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26040,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17026:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26041,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17033:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26042,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17047:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26038,
                        "name": "STF_ANN_SC",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28166,
                        "src": "17008:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26043,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17008:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26044,
                    "nodeType": "Return",
                    "src": "17001:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26046,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "17074:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26047,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17087:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17087:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17074:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26057,
                  "nodeType": "IfStatement",
                  "src": "17070:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26051,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17119:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26052,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17126:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26053,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17133:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26054,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17147:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26050,
                        "name": "STF_ANN_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27260,
                        "src": "17108:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26055,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17108:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26056,
                    "nodeType": "Return",
                    "src": "17101:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26058,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25895,
                      "src": "17174:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26059,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "17187:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26060,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17187:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "17174:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26069,
                  "nodeType": "IfStatement",
                  "src": "17170:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26063,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25883,
                          "src": "17219:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26064,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25885,
                          "src": "17226:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26065,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25897,
                          "src": "17233:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26066,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25889,
                          "src": "17247:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26062,
                        "name": "STF_ANN_CE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27393,
                        "src": "17208:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (struct State memory)"
                        }
                      },
                      "id": 26067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17208:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "functionReturnParameters": 25893,
                    "id": 26068,
                    "nodeType": "Return",
                    "src": "17201:59:85"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e456e67696e652e73746174655472616e736974696f6e46756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 26071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17278:56:85",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0c14b78486c907199f272596b170218e470e6da270fa89cf62ac28351f620bf",
                          "typeString": "literal_string \"ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d0c14b78486c907199f272596b170218e470e6da270fa89cf62ac28351f620bf",
                          "typeString": "literal_string \"ANNEngine.stateTransitionFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 26070,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "17271:6:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 26072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17271:64:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26073,
                  "nodeType": "ExpressionStatement",
                  "src": "17271:64:85"
                }
              ]
            },
            "documentation": {
              "id": 25881,
              "nodeType": "StructuredDocumentation",
              "src": "14803:649:85",
              "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": 26075,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stateTransitionFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 25890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25883,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15499:21:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25882,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "15499:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25885,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15530:18:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25884,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15530:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25887,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15558:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25886,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15558:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25889,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15582:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25888,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "15582:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15489:119:85"
            },
            "returnParameters": {
              "id": 25893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25892,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26075,
                  "src": "15656:12:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25891,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "15656:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15655:14:85"
            },
            "scope": 26241,
            "src": "15457:1885:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26239,
              "nodeType": "Block",
              "src": "18184:1745:85",
              "statements": [
                {
                  "assignments": [
                    26090,
                    26092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26090,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26239,
                      "src": "18195:19:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 26089,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "18195:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 26092,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26239,
                      "src": "18216:20:85",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 26091,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "18216:7:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26096,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 26094,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26082,
                        "src": "18252:6:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 26093,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "18240:11:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 26095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18240:19:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18194:65:85"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26097,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18771:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26098,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18784:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "AD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18784:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18771:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26103,
                  "nodeType": "IfStatement",
                  "src": "18767:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18805:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26102,
                    "nodeType": "Return",
                    "src": "18798:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26104,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18820:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26105,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18833:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IPCI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18833:14:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18820:27:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26110,
                  "nodeType": "IfStatement",
                  "src": "18816:41:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18856:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26109,
                    "nodeType": "Return",
                    "src": "18849:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26111,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18871:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26112,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18884:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RRF",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18884:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18871:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26117,
                  "nodeType": "IfStatement",
                  "src": "18867:40:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18906:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26116,
                    "nodeType": "Return",
                    "src": "18899:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26118,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18921:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26119,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18934:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "RR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18934:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18921:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26124,
                  "nodeType": "IfStatement",
                  "src": "18917:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18955:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26123,
                    "nodeType": "Return",
                    "src": "18948:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26125,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "18970:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26126,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "18983:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "SC",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18983:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "18970:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26131,
                  "nodeType": "IfStatement",
                  "src": "18966:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19004:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26130,
                    "nodeType": "Return",
                    "src": "18997:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26132,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19019:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26133,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19032:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CE",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19032:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19019:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26138,
                  "nodeType": "IfStatement",
                  "src": "19015:39:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19053:1:85",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 26088,
                    "id": 26137,
                    "nodeType": "Return",
                    "src": "19046:8:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26139,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19068:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26140,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19081:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "FP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19081:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19068:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26150,
                  "nodeType": "IfStatement",
                  "src": "19064:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26144,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19113:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26145,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19120:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26146,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19127:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26147,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19141:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26143,
                        "name": "POF_ANN_FP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26326,
                        "src": "19102:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19102:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26149,
                    "nodeType": "Return",
                    "src": "19095:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26151,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19168:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26152,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19181:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26153,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19181:13:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19168:26:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26162,
                  "nodeType": "IfStatement",
                  "src": "19164:92:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26156,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19215:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26157,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19222:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26158,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19229:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26159,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19243:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26155,
                        "name": "POF_ANN_IED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26358,
                        "src": "19203:11:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19203:53:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26161,
                    "nodeType": "Return",
                    "src": "19196:60:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26163,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19270:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26164,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19283:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "IP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19283:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19270:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26174,
                  "nodeType": "IfStatement",
                  "src": "19266:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26168,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19315:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26169,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19322:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26170,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19329:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26171,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19343:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26167,
                        "name": "POF_ANN_IP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26424,
                        "src": "19304:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19304:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26173,
                    "nodeType": "Return",
                    "src": "19297:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26175,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19370:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26176,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19383:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PP",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19383:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19370:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26186,
                  "nodeType": "IfStatement",
                  "src": "19366:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26180,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19415:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26181,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19422:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26182,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19429:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26183,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19443:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26179,
                        "name": "POF_ANN_PP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26448,
                        "src": "19404:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26184,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19404:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26185,
                    "nodeType": "Return",
                    "src": "19397:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26187,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19470:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26188,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19483:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PR",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19483:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19470:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26198,
                  "nodeType": "IfStatement",
                  "src": "19466:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26192,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19515:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26193,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19522:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26194,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19529:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26195,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19543:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26191,
                        "name": "POF_ANN_PR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26731,
                        "src": "19504:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26196,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19504:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26197,
                    "nodeType": "Return",
                    "src": "19497:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26199,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19570:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26200,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19583:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19583:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19570:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26210,
                  "nodeType": "IfStatement",
                  "src": "19566:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26204,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19615:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26205,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19622:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26206,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19629:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26207,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19643:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26203,
                        "name": "POF_ANN_MD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26471,
                        "src": "19604:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26208,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19604:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26209,
                    "nodeType": "Return",
                    "src": "19597:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26211,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19670:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26212,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19683:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26213,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19683:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19670:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26222,
                  "nodeType": "IfStatement",
                  "src": "19666:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26216,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19715:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26217,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19722:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26218,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19729:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26219,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19743:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26215,
                        "name": "POF_ANN_PY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26570,
                        "src": "19704:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19704:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26221,
                    "nodeType": "Return",
                    "src": "19697:59:85"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_EventType_$22610",
                      "typeString": "enum EventType"
                    },
                    "id": 26226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 26223,
                      "name": "eventType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26090,
                      "src": "19770:9:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26224,
                        "name": "EventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22610,
                        "src": "19783:9:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                          "typeString": "type(enum EventType)"
                        }
                      },
                      "id": 26225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19783:12:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      }
                    },
                    "src": "19770:25:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 26234,
                  "nodeType": "IfStatement",
                  "src": "19766:90:85",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 26228,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26078,
                          "src": "19815:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26229,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26080,
                          "src": "19822:5:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26230,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26092,
                          "src": "19829:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 26231,
                          "name": "externalData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26084,
                          "src": "19843:12:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 26227,
                        "name": "POF_ANN_TD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26641,
                        "src": "19804:10:85",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_ANNTerms_$22768_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_uint256_$_t_bytes32_$returns$_t_int256_$",
                          "typeString": "function (struct ANNTerms memory,struct State memory,uint256,bytes32) pure returns (int256)"
                        }
                      },
                      "id": 26232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19804:52:85",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "functionReturnParameters": 26088,
                    "id": 26233,
                    "nodeType": "Return",
                    "src": "19797:59:85"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e456e67696e652e7061796f666646756e6374696f6e3a204154545249425554455f4e4f545f464f554e44",
                        "id": 26236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19874:47:85",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1fdd225bafdf9316c07e735e39ab1de13d95b2d0518cc8f69e5460760a5673d4",
                          "typeString": "literal_string \"ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        },
                        "value": "ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_1fdd225bafdf9316c07e735e39ab1de13d95b2d0518cc8f69e5460760a5673d4",
                          "typeString": "literal_string \"ANNEngine.payoffFunction: ATTRIBUTE_NOT_FOUND\""
                        }
                      ],
                      "id": 26235,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "19867:6:85",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 26237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19867:55:85",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 26238,
                  "nodeType": "ExpressionStatement",
                  "src": "19867:55:85"
                }
              ]
            },
            "documentation": {
              "id": 26076,
              "nodeType": "StructuredDocumentation",
              "src": "17348:629:85",
              "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 todo IPCB events and Icb state variable, Icb state variable updates in IP-paying events\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"
            },
            "id": 26240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoffFunction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26085,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26078,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18015:21:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26077,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "18015:8:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26080,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18046:18:85",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26079,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "18046:5:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26082,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18074:14:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26081,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18074:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26084,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18098:20:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26083,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18098:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18005:119:85"
            },
            "returnParameters": {
              "id": 26088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26087,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26240,
                  "src": "18172:6:85",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 26086,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18172:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18171:8:85"
            },
            "scope": 26241,
            "src": "17982:1947:85",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 26242,
        "src": "430:19501:85"
      }
    ],
    "src": "41:19890:85"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {},
      "links": {},
      "address": "0x9F6ad591542a842BD679Bf54c9fCa2dA284dFa99",
      "transactionHash": "0x5cb13ca05ecc1babb768e4cb94ecc2c1ece8418f071ec4e1194c6eb3a73b45a9"
    },
    "5": {
      "events": {},
      "links": {},
      "address": "0xa15Cee3298C48aCe9c73A7e9f11C33ec936fFc80",
      "transactionHash": "0x0a2147be99147e3e1f1d0ac5e630d244f968d913eee5a339e97b354fc1fa9796"
    },
    "1994": {
      "events": {},
      "links": {},
      "address": "0xCA386B0fD4f446aA61957f87d0A1630042255b37",
      "transactionHash": "0x7c183797e8233bda308dc251a213a62c2e57ee1694e57ab06ff97913053b4c57"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.310Z",
  "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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "params": {
          "terms": "terms of the contract"
        },
        "returns": {
          "_0": "initial state of the contract"
        }
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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": "ANNEngine",
    "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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "notice": "Initialize contract state space based on the contract terms. todo implement annuity calculator"
      },
      "computeNextCyclicEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),uint256,uint256)": {
        "notice": "Computes a schedule segment of non-cyclic contract events based on the contract terms and the specified timestamps. todo rate reset, scaling, interest calculation base"
      },
      "computePayoffForEvent((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),(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 ANN contract",
    "version": 1
  }
}