{
  "contractName": "PAMRegistry",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "RegisteredAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevActor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newActor",
          "type": "address"
        }
      ],
      "name": "UpdatedActor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBeneficiary",
          "type": "address"
        }
      ],
      "name": "UpdatedBeneficiary",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevEngine",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newEngine",
          "type": "address"
        }
      ],
      "name": "UpdatedEngine",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevObligor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newObligor",
          "type": "address"
        }
      ],
      "name": "UpdatedObligor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "approveActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedActors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getActor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getEngine",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getOwnership",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "setActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCounterpartyBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyObligor",
          "type": "address"
        }
      ],
      "name": "setCounterpartyObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCreatorBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorObligor",
          "type": "address"
        }
      ],
      "name": "setCreatorObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        }
      ],
      "name": "setEngine",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "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": "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": "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"
            }
          ],
          "internalType": "struct PAMTerms",
          "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": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getTerms",
      "outputs": [
        {
          "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": "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": "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"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "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": "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": "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"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"RegisteredAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevActor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newActor\",\"type\":\"address\"}],\"name\":\"UpdatedActor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevBeneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"UpdatedBeneficiary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEngine\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEngine\",\"type\":\"address\"}],\"name\":\"UpdatedEngine\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevObligor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newObligor\",\"type\":\"address\"}],\"name\":\"UpdatedObligor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"UpdatedTerms\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"approveActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"approvedActors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getActor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getAddressValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getBytes32ValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getContractReferenceValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getCycleValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getEngine\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getEventAtIndex\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextUnderlyingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getOwnership\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getPeriodValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getScheduleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getTerms\",\"outputs\":[{\"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\":\"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\":\"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\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"isEventSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"_payoff\",\"type\":\"int256\"}],\"name\":\"markEventAsSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pendingEvent\",\"type\":\"bytes32\"}],\"name\":\"pushPendingEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"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\":\"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\":\"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\"}],\"internalType\":\"struct PAMTerms\",\"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\":\"schedule\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"ownership\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"registerAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"setActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyBeneficiary\",\"type\":\"address\"}],\"name\":\"setCounterpartyBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyObligor\",\"type\":\"address\"}],\"name\":\"setCounterpartyObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorBeneficiary\",\"type\":\"address\"}],\"name\":\"setCreatorBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorObligor\",\"type\":\"address\"}],\"name\":\"setCreatorObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"}],\"name\":\"setEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"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\":\"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\":\"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\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"setTerms\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveActor(address)\":{\"details\":\"Can only be called by the owner of the contract.\",\"params\":{\"actor\":\"address of the actor\"}},\"getActor(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the asset actor\"}},\"getEngine(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the engine of the asset\"}},\"getEventAtIndex(bytes32,uint256)\":{\"params\":{\"assetId\":\"id of the asset\",\"index\":\"index of the event to return\"},\"returns\":{\"_0\":\"Event\"}},\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getNextScheduleIndex(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Index\"}},\"getNextScheduledEvent(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"event\"}},\"getOwnership(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"addresses of all owners of the asset\"}},\"getSchedule(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"the schedule\"}},\"getScheduleLength(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Length of the schedule\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getTerms(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"terms of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"isEventSettled(bytes32,bytes32)\":{\"params\":{\"_event\":\"event (encoded)\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if event was settled\"}},\"isRegistered(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if asset exist\"}},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"_event\":\"event (encoded) to be marked as settled\",\"assetId\":\"id of the asset\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"popNextScheduledEvent(bytes32)\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\"}},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,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[],(address,address,address,address),address,address,address)\":{\"params\":{\"actor\":\"account which is allowed to update the asset state\",\"admin\":\"account which as admin rights (optional)\",\"engine\":\"ACTUS Engine of the asset\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"state\":\"initial state of the asset\",\"terms\":\"asset specific terms (PAMTerms)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setActor(bytes32,address)\":{\"params\":{\"actor\":\"address of the Actor contract\",\"assetId\":\"id of the asset\"}},\"setCounterpartyBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current counterparty beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyBeneficiary\":\"address of the new beneficiary\"}},\"setCounterpartyObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyObligor\":\"address of the new counterparty obligor\"}},\"setCreatorBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current creator beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorBeneficiary\":\"address of the new beneficiary\"}},\"setCreatorObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorObligor\":\"address of the new creator obligor\"}},\"setEngine(bytes32,address)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"engine\":\"new engine address\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"terms\":\"new terms\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PAMRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveActor(address)\":{\"notice\":\"Approves the address of an actor contract e.g. for registering assets.\"},\"getActor(bytes32)\":{\"notice\":\"Returns the address of the actor which is allowed to update the state of the asset.\"},\"getEngine(bytes32)\":{\"notice\":\"Returns the address of a the ACTUS engine corresponding to the ContractType of an asset.\"},\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"getEventAtIndex(bytes32,uint256)\":{\"notice\":\"Returns an event for a given position (index) in a schedule of a given asset.\"},\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getNextScheduleIndex(bytes32)\":{\"notice\":\"Returns the index of the next event to be processed for a schedule of an asset.\"},\"getNextScheduledEvent(bytes32)\":{\"notice\":\"Returns the next event to process.\"},\"getNextUnderlyingEvent(bytes32)\":{\"notice\":\"If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event.\"},\"getOwnership(bytes32)\":{\"notice\":\"Retrieves the registered addresses of owners (creator, counterparty) of an asset.\"},\"getSchedule(bytes32)\":{\"notice\":\"Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\"},\"getScheduleLength(bytes32)\":{\"notice\":\"Returns the length of a schedule of a given asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getTerms(bytes32)\":{\"notice\":\"Returns the terms of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"isEventSettled(bytes32,bytes32)\":{\"notice\":\"Returns true if an event of an assets schedule was settled\"},\"isRegistered(bytes32)\":{\"notice\":\"Returns if there is an asset registerd for a given assetId\"},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"notice\":\"Mark an event as settled\"},\"popNextScheduledEvent(bytes32)\":{\"notice\":\"Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)\"},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,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[],(address,address,address,address),address,address,address)\":{\"notice\":\"@param assetId id of the asset\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setActor(bytes32,address)\":{\"notice\":\"Set the address of the Actor contract which should be going forward.\"},\"setCounterpartyBeneficiary(bytes32,address)\":{\"notice\":\"Updates the address of the default beneficiary of cashflows going to the counterparty.\"},\"setCounterpartyObligor(bytes32,address)\":{\"notice\":\"Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset.\"},\"setCreatorBeneficiary(bytes32,address)\":{\"notice\":\"Update the address of the default beneficiary of cashflows going to the creator.\"},\"setCreatorObligor(bytes32,address)\":{\"notice\":\"Update the address of the obligor which has to fulfill obligations for the creator of the asset.\"},\"setEngine(bytes32,address)\":{\"notice\":\"Set the engine address which should be used for the asset going forward.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))\":{\"notice\":\"Set the terms of the asset\"}},\"notice\":\"Registry for ACTUS Protocol assets\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMRegistry.sol\":\"PAMRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol\":{\"keccak256\":\"0x9899864abf65d99906f23a24d6b4d52e1c6102c11993dad09f90e1d7bbc49744\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cd11e167f393e04f82f0619080f778239992d730b51b1771aaabdddf627ebdaf\",\"dweb:/ipfs/QmXaMYWTLW5xzhjkotfX63dtfRk1MsqJgM9uiqAUg6vtXe\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/OwnershipRegistry.sol\":{\"keccak256\":\"0x3208a383e52d2ac8417093f9d165c1a6f32f625988f59fec26aeddff0dbcc490\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45593942700d2bbdbe86f9420c9c365c503845089745a0f7ad7ffa811e559ed6\",\"dweb:/ipfs/QmeTLQdx1C6vnWmtrXbLGwaSk2axKFEzeiX6TQesTCjadZ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":{\"keccak256\":\"0x5a377f9877c1748cf2e6ee158306f204e5d740e82ad2aa3b3ca680258edc8c36\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ad876b340f89357f3baf8dae0bfecd3758323f93019d1b4543da387f720c2f73\",\"dweb:/ipfs/QmQyDtzUtGgEz3JXnpU8qdg6tHAP3KWAfwgY6Y2Z8RytJo\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol\":{\"keccak256\":\"0xbb72fb674b59a69ddfbbbae6646779d9a9e45d5f6ce058090cea73898c6144f3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://002359bb2412c5dfe0172701869a9014dfd8c5210b22f5cb7cd70e615cbe1b78\",\"dweb:/ipfs/QmPATHyGY8MhzKH96o37EWQx7n99C5kXgV4xyHt64szxPX\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/IPAMRegistry.sol\":{\"keccak256\":\"0x6320f224fb4c17adec2801d55d3cf59fc02a6d321d6636b00fcc01e35a032b6a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e09fa73760ff5cb5add8784722d8f0c599fd5a2ee7e3a7487583799c868af3c6\",\"dweb:/ipfs/QmQUGXfsktqRud2XmrJ5UW2CHSbPq2TwTs6HsWqrdnVpNn\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMEncoder.sol\":{\"keccak256\":\"0x717c807bc62bb5debda11ab928a77662809e7cb6a15ac15fa27c47c9736e4dc3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://af7c9b5674baf74a257dd629af00d477fed7b207cb4441281ec75e630fa8a10e\",\"dweb:/ipfs/QmUM2Jr2FPH12wKJ7A74ZnZ6Gc6BK2eY4eAKkaDduScpCp\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMRegistry.sol\":{\"keccak256\":\"0x29a3bcc3b4bd66bcc2c9ab2fa3cab3e3f57a42d25373e715a90e70d817cb324d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a56af51dbf9f7fc9089e453f36b7b68023242575c3ca2a4f7d48330efcc7f708\",\"dweb:/ipfs/QmdC1QoNFjRAx63FRF5xjkCV2AaDYqkXwAsbSonosgTShR\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol\":{\"keccak256\":\"0xa33328cd3ebdafc5ecc46fb2dc6cacd94f2282e45092b4719c423cd9fa7ed02a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b2325d41367ace1e94ccf5d732440fa522899f23fe8b24f0d968b9f9e92d56d\",\"dweb:/ipfs/QmbPYatSMUZ3K8bnUKYYQtDkbg53Y6BNNFen8GJ6ZhVrfC\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b61555f806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d9399431116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d939943114610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e13b36fd146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c3b6e7c211610130578063c3b6e7c21461061d578063ccfc347e14610630578063cf5aed1214610643578063d51dc3dc146106635761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e65565b61077a565b005b610339610334366004613e35565b61084f565b6040516103469190615314565b60405180910390f35b61036261035d366004613e35565b610876565b6040516103469190614972565b61032461037d366004613e65565b6108ed565b610362610390366004613e94565b610992565b6103246103a3366004613ee0565b610a31565b6103bb6103b6366004613ee0565b610ae7565b6040516103469190614957565b6103bb6103d6366004613e35565b610b64565b6103626103e9366004613e35565b610b79565b6103246103fc366004613e65565b610b8e565b61033961040f366004613e35565b610c69565b610324610422366004613ee0565b610c88565b61043a610435366004613e35565b610d2d565b6040516103469190614913565b610324610455366004613e65565b610d47565b610324610468366004613e65565b610e0e565b61036261047b366004613e94565b610ee9565b61032461048e366004614041565b610f07565b6104a66104a1366004613e35565b610fcd565b60405161034691906152d6565b6104c66104c1366004613e94565b61106b565b60405161034691906152c8565b61032461110a565b6104ee6104e9366004613e35565b611189565b604051610346929190614a37565b61036261050a366004613e35565b6111b2565b61032461051d366004614041565b611586565b610362610530366004614065565b61163f565b61053d61164d565b60405161034691906148e5565b610362610558366004613e35565b61165c565b61036261056b366004613e94565b611671565b61058361057e366004613e94565b611692565b60405161034691906152ba565b61053d61059e366004613e35565b611731565b6103626105b1366004613e94565b611750565b6103626105c4366004613e35565b611796565b6105dc6105d7366004613e94565b611869565b604051610346929190614962565b6105fd6105f8366004613e94565b611893565b604051610346919061527a565b610324610618366004613e65565b611932565b61036261062b366004613e35565b6119ca565b6103bb61063e366004613de1565b611bc7565b610656610651366004613e94565b611bdc565b60405161034691906153f9565b610362610671366004613e94565b611bfa565b610324610684366004613f5a565b611c40565b610324610697366004613e94565b611d4f565b6103246106aa366004613eb5565b611dbe565b6103626106bd366004614081565b611e5a565b6103246106d0366004613f2d565b611e78565b6106e86106e3366004613e35565b611f78565b6040516103469190614f3a565b610324610703366004613de1565b611fd6565b6103bb610716366004613e65565b61202f565b61053d610729366004613e94565b612065565b61065661073c366004613e94565b6120fb565b61053d61074f366004613e35565b612191565b610324610762366004613de1565b6121b1565b610362610775366004613e35565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bac565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a209061084190849087906148f9565b60405180910390a250505050565b6108576139eb565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bac565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614e7e565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25906109859085908490869061497b565b60405180910390a1505050565b600082815260016020526040808220905163ed7210f360e01b815273__PAMEncoder____________________________9163ed7210f3916109d891908690600401614f75565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e4d565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e2f565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a22565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a4f565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614aac565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce906109859085908490869061497b565b610c716139eb565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e2f565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a22565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bac565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb9061084190849087906148f9565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dd2565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614c9a565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce906109859085908490869061497b565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bac565b610f8c610f723684900384018461441a565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614972565b60405180910390a2505050565b610fd5613a85565b60008281526001602052604090819020905163f21917af60e01b815273__PAMEncoder____________________________9163f21917af9161101a9190600401614972565b6107806040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190614194565b611073613bff565b6000838152600160205260409081902090516379e3e37b60e11b815273__PAMEncoder____________________________9163f3c7c6f6916110ba91908690600401614f75565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614179565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d40565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c22565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614972565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e19565b6112a25760405162461bcd60e51b81526004016107d390614ed2565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b815260040161132291906149fd565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190614517565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906149da565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e4d565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a9060040161499a565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614179565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149b7565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bac565b61160b6115f13684900384018461441a565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614972565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c49565b600083815260016020526040908190209051630ef392f960e11b815273__PAMEncoder____________________________91631de725f2916116e191908690600401614f75565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061415e565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051633d548cbb60e11b815273__PAMEncoder____________________________91637aa91976916109d891908690600401614f75565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c22565b60008381526001602052604090819020905163e810f93360e01b815273__PAMEncoder____________________________9163e810f933916118e291908690600401614f75565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614114565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614b4f565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25906109859085908490869061497b565b60008181526001602081905260408220015482906001600160a01b0316331480611a065750611a06816000356001600160e01b03191633610ae7565b611a225760405162461bcd60e51b81526004016107d390614bac565b600083815260016020526040812090611a3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611a64575081155b15611a765750600093506108e7915050565b600080611a8284611189565b91509150600080611a9285611189565b9150915084861415611b07578260028801600086601c811115611ab157fe5b601c811115611abc57fe5b8152602081019190915260400160002055600487015460058801541415611aee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611b1d57508215801590611b1d57508083105b80611b4157508083148015611b415750611b368261163f565b611b3f8561163f565b105b15611b84578260028801600086601c811115611b5957fe5b601c811115611b6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611b98575060048701546005880154145b15611bae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61343016565b600082815260016020526040808220905163168bf13960e01b815273__PAMEncoder____________________________9163168bf139916109d891908690600401614f75565b3360009081526002602052604090205460ff16611c6f5760405162461bcd60e51b81526004016107d390614c46565b611ccd89611c82368a90038a018a61441a565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc592505050368990038901896140ac565b8787876134dc565b600089815260016020526040908190209051635276dec160e01b815273__PAMEncoder____________________________91635276dec191611d1491908c90600401614f83565b60006040518083038186803b158015611d2c57600080fd5b505af4158015611d40573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bac565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bac565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611eb55750611eb5816000356001600160e01b03191633610ae7565b611ed15760405162461bcd60e51b81526004016107d390614bac565b600083815260016020526040908190209051635276dec160e01b815273__PAMEncoder____________________________91635276dec191611f1891908690600401614f83565b60006040518083038186803b158015611f3057600080fd5b505af4158015611f44573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b611f80613c6a565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614d40565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051631501b33960e21b815273__PAMEncoder____________________________91635406cce4916120ab91908690600401614f75565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613dfd565b600082815260016020526040808220905163539dda9160e11b815273__PAMEncoder____________________________9163a73bb5229161214191908690600401614f75565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614517565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614d40565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b09565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139eb565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139eb565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613661565b61299c826b465f7374617475734461746560a01b836020015160001b613661565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613661565b6129e7826d465f6d617475726974794461746560901b836060015160001b613661565b612a0a826d465f65786572636973654461746560901b836080015160001b613661565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613661565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613661565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613661565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613661565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613661565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613661565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613661565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613661565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613661565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613661565b612bd38269465f7175616e7469747960b01b83610200015160001b613661565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613661565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613661565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613661565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613661565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369716565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369716565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ac16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ac16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ac16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372816565b60405162461bcd60e51b81526004016107d390614d75565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613661565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613661565b612e33826b6d617475726974794461746560a01b836060015160001b613661565b612e54826b65786572636973654461746560a01b836080015160001b613661565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613661565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613661565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613661565b612ee382691999595058d8dc9d595960b21b83610120015160001b613661565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613661565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613661565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613661565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613661565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613661565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613661565b61300582677175616e7469747960c01b83610200015160001b613661565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613661565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613661565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613661565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613661565b60008181526001602052604081206130ac613a85565b60405163f21917af60e01b815273__PAMEncoder____________________________9063f21917af906130e3908590600401614972565b6107806040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131349190614194565b82549091506000908190819081906131e09061010090046001600160a01b031663dd37acde8760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b8152600401613190939291906152e5565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e4d565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051636e9bd66f60e11b815291938493613273936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051636e9bd66f60e11b81529193849361331b936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460126000818152600287016020526040808220549051636e9bd66f60e11b8152919384936133c3936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b9150915082600014806133df575080158015906133df57508281105b8061340e575080158015906133f357508083145b801561340e57506134038461163f565b61340c8361163f565b105b1561341a578092508193505b50506134268282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613481575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d4575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350c5760405162461bcd60e51b81526004016107d390614bfb565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135495760405162461bcd60e51b81526004016107d390614cf7565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e78188612da0565b6135f7818863ffffffff61294216565b613607818763ffffffff61374f16565b6001600160a01b038216156136205761362088836137b7565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364f9190614972565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367e57613692565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136c062015180875b0461382e565b600c9188016000198101838104949094019650945092509006600101915060006136ea84846138c4565b9050808211156136f8578091505b6201518087066201518061370d86868661394a565b020194508685101561371e57600080fd5b5050505092915050565b600080808061373a62015180876136ba565b91870194509250905060006136ea84846138c4565b60005b8151811015613692576000801b82828151811061376b57fe5b6020026020010151141561377e57613692565b81818151811061378a57fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613752565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382291614a22565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d55750816003145b806138e05750816005145b806138eb5750816007145b806138f65750816008145b80613901575081600a145b8061390c575081600c145b156139195750601f610a2b565b816002146139295750601e610a2b565b613932836139c6565b61393d57601c613940565b601d5b60ff169392505050565b60006107b284101561395b57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399757fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139db57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bb9613bff565b8152602001613bc6613bff565b8152602001613bd3613c49565b8152602001613be0613c49565b8152602001613bed613c49565b8152602001613bfa613c49565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613bfa565b60408051608081019091526000808252602082019081526020016000613c15565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b8161549e565b8051610a2b8161549e565b8051610a2b816154c1565b8051610a2b816154ce565b8035610a2b816154db565b8051610a2b816154f5565b8035610a2b81615502565b8051610a2b81615502565b8051610a2b816154db565b8051610a2b8161551c565b6000608082840312156108e7578081fd5b600060808284031215613d21578081fd5b613d2b6080615407565b9050815181526020820151613d3f816154db565b60208201526040820151613d52816154ce565b60408201526060820151613d65816154b3565b606082015292915050565b600060608284031215613d81578081fd5b613d8b6060615407565b9050815181526020820151613d9f816154db565b60208201526040820151613db2816154b3565b604082015292915050565b600061078082840312156108e7578081fd5b600061028082840312156108e7578081fd5b600060208284031215613df2578081fd5b8135610a288161549e565b600060208284031215613e0e578081fd5b8151610a288161549e565b600060208284031215613e2a578081fd5b8151610a28816154b3565b600060208284031215613e46578081fd5b5035919050565b600060208284031215613e5e578081fd5b5051919050565b60008060408385031215613e77578081fd5b823591506020830135613e898161549e565b809150509250929050565b60008060408385031215613ea6578182fd5b50508035926020909101359150565b600080600060608486031215613ec9578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613ef4578081fd5b8335925060208401356001600160e01b031981168114613f12578182fd5b91506040840135613f228161549e565b809150509250925092565b6000806107a08385031215613f40578182fd5b82359150613f518460208501613dbd565b90509250929050565b6000806000806000806000806000610b208a8c031215613f78578687fd5b89359850613f898b60208c01613dbd565b9750613f998b6107a08c01613dcf565b9650610a208a013567ffffffffffffffff80821115613fb6578687fd5b818c018d601f820112613fc7578788fd5b8035925081831115613fd7578788fd5b8d60208085028301011115613fea578788fd5b602001975090955061400290508b610a408c01613cff565b93506140128b610ac08c01613c91565b92506140228b610ae08c01613c91565b91506140328b610b008c01613c91565b90509295985092959850929598565b6000806102a08385031215614054578182fd5b82359150613f518460208501613dcf565b600060208284031215614076578081fd5b8135610a288161550f565b60008060408385031215614093578182fd5b823561409e8161550f565b946020939093013593505050565b6000608082840312156140bd578081fd5b6140c76080615407565b82356140d28161549e565b815260208301356140e28161549e565b602082015260408301356140f58161549e565b604082015260608301356141088161549e565b60608201529392505050565b600060808284031215614125578081fd5b61412f6080615407565b8251815260208301516020820152604083015161414b816154e8565b60408201526060830151614108816154e8565b60006080828403121561416f578081fd5b610a288383613d10565b60006060828403121561418a578081fd5b610a288383613d70565b600061078082840312156141a6578081fd5b6105806141b281615407565b6141bc8585613cde565b81526141cb8560208601613cb2565b60208201526141dd8560408601613cc8565b60408201526141ef8560608601613ce9565b60608201526142018560808601613ca7565b60808201526142138560a08601613cb2565b60a08201526142258560c08601613cf4565b60c08201526142378560e08601613cf4565b60e082015261010061424b86828701613cb2565b9082015261012061425e86868301613c9c565b9082015261014061427186868301613c9c565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c06143ad86828701613d70565b908201526105206143c086868301613d70565b6104e08301526143d286848701613d10565b6105008301526143e6866106008701613d10565b908201526143f8856106808601613d10565b61054082015261440c856107008601613d10565b610560820152949350505050565b600061028080838503121561442d578182fd5b61443681615407565b6144408585613cbd565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b600060208284031215614528578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061454f57fe5b9052565b61454f81615487565b61454f81615494565b600d811061454f57fe5b6013811061454f57fe5b6004811061454f57fe5b803582526020810135614595816154db565b61459e81615494565b602083015260408101356145b1816154ce565b6145ba81615487565b604083015260608101356145cd816154b3565b8015156060840152505050565b8051825260208101516145ec81615494565b602083015260408101516145ff81615487565b60408301526060908101511515910152565b803582526020810135614623816154db565b61462c81615494565b6020830152604081013561463f816154b3565b8015156040840152505050565b80518252602081015161465e81615494565b60208301526040908101511515910152565b61467b82825161456f565b602081015161468d6020840182614553565b5060408101516146a06040840182614565565b5060608101516146b3606084018261455c565b5060808101516146c66080840182614545565b5060a08101516146d960a0840182614553565b5060c08101516146ec60c0840182614579565b5060e08101516146ff60e0840182614579565b506101008082015161471382850182614553565b50506101208082015161472882850182614538565b50506101408082015161473d82850182614538565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c08082015161487b8285018261464c565b50506104e08101516105206148928185018361464c565b61050083015191506148a86105808501836145da565b82015190506148bb6106008401826145da565b506105408101516148d06106808401826145da565b506105608101516136926107008401826145da565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561494b5783518352928401929184019160010161492f565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d8410614a4557fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107a08101602083810190614fa6908401614fa18387613cd3565b61456f565b614fb08185615448565b614fbd6040850182614553565b5050614fcc6040840184615455565b614fd96060840182614565565b50614fe76060840184615462565b614ff4608084018261455c565b50615002608084018461543b565b61500f60a0840182614545565b5061501d60a0840184615448565b61502a60c0840182614553565b5061503860c084018461546f565b61504560e0840182614579565b5061505360e084018461546f565b61010061506281850183614579565b61506e81860186615448565b91505061012061508081850183614553565b61508c8186018661542e565b91505061014061509e81850183614538565b6150aa8186018661542e565b9150506101606150bc81850183614538565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c0915080850135828501525061521f6104e08401828601614611565b5061523261054083016105208501614611565b6152446105a083016105808501614583565b61525661062083016106008501614583565b6152686106a083016106808501614583565b610b5d61072083016107008501614583565b6000608082019050825182526020830151602083015261529d604084015161547c565b60408301526152af606084015161547c565b606083015292915050565b60808101610a2b82846145da565b60608101610a2b828461464c565b6107808101610a2b8284614670565b6107c081016152f48286614670565b83610780830152601d831061530557fe5b826107a0830152949350505050565b60006102808201905061532882845161455c565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561542657600080fd5b604052919050565b60008235610a288161549e565b60008235610a28816154c1565b60008235610a28816154ce565b60008235610a28816154f5565b60008235610a28816154db565b60008235610a288161551c565b806005811061087157fe5b6002811061549157fe5b50565b6006811061549157fe5b6001600160a01b038116811461549157600080fd5b801515811461549157600080fd5b6009811061549157600080fd5b6002811061549157600080fd5b6006811061549157600080fd5b6005811061549157600080fd5b600d811061549157600080fd5b6013811061549157600080fd5b601d811061549157600080fd5b6004811061549157600080fdfea26469706673582212207bb05d0ebee97651e1be4757975c2ee7b7d10aa8d385b0170339d6947100548a64736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d9399431116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d939943114610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e13b36fd146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c3b6e7c211610130578063c3b6e7c21461061d578063ccfc347e14610630578063cf5aed1214610643578063d51dc3dc146106635761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e65565b61077a565b005b610339610334366004613e35565b61084f565b6040516103469190615314565b60405180910390f35b61036261035d366004613e35565b610876565b6040516103469190614972565b61032461037d366004613e65565b6108ed565b610362610390366004613e94565b610992565b6103246103a3366004613ee0565b610a31565b6103bb6103b6366004613ee0565b610ae7565b6040516103469190614957565b6103bb6103d6366004613e35565b610b64565b6103626103e9366004613e35565b610b79565b6103246103fc366004613e65565b610b8e565b61033961040f366004613e35565b610c69565b610324610422366004613ee0565b610c88565b61043a610435366004613e35565b610d2d565b6040516103469190614913565b610324610455366004613e65565b610d47565b610324610468366004613e65565b610e0e565b61036261047b366004613e94565b610ee9565b61032461048e366004614041565b610f07565b6104a66104a1366004613e35565b610fcd565b60405161034691906152d6565b6104c66104c1366004613e94565b61106b565b60405161034691906152c8565b61032461110a565b6104ee6104e9366004613e35565b611189565b604051610346929190614a37565b61036261050a366004613e35565b6111b2565b61032461051d366004614041565b611586565b610362610530366004614065565b61163f565b61053d61164d565b60405161034691906148e5565b610362610558366004613e35565b61165c565b61036261056b366004613e94565b611671565b61058361057e366004613e94565b611692565b60405161034691906152ba565b61053d61059e366004613e35565b611731565b6103626105b1366004613e94565b611750565b6103626105c4366004613e35565b611796565b6105dc6105d7366004613e94565b611869565b604051610346929190614962565b6105fd6105f8366004613e94565b611893565b604051610346919061527a565b610324610618366004613e65565b611932565b61036261062b366004613e35565b6119ca565b6103bb61063e366004613de1565b611bc7565b610656610651366004613e94565b611bdc565b60405161034691906153f9565b610362610671366004613e94565b611bfa565b610324610684366004613f5a565b611c40565b610324610697366004613e94565b611d4f565b6103246106aa366004613eb5565b611dbe565b6103626106bd366004614081565b611e5a565b6103246106d0366004613f2d565b611e78565b6106e86106e3366004613e35565b611f78565b6040516103469190614f3a565b610324610703366004613de1565b611fd6565b6103bb610716366004613e65565b61202f565b61053d610729366004613e94565b612065565b61065661073c366004613e94565b6120fb565b61053d61074f366004613e35565b612191565b610324610762366004613de1565b6121b1565b610362610775366004613e35565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bac565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a209061084190849087906148f9565b60405180910390a250505050565b6108576139eb565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bac565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614e7e565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25906109859085908490869061497b565b60405180910390a1505050565b600082815260016020526040808220905163ed7210f360e01b815273__PAMEncoder____________________________9163ed7210f3916109d891908690600401614f75565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e4d565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e2f565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a22565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a4f565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614aac565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce906109859085908490869061497b565b610c716139eb565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e2f565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a22565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bac565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb9061084190849087906148f9565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dd2565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614c9a565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce906109859085908490869061497b565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bac565b610f8c610f723684900384018461441a565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614972565b60405180910390a2505050565b610fd5613a85565b60008281526001602052604090819020905163f21917af60e01b815273__PAMEncoder____________________________9163f21917af9161101a9190600401614972565b6107806040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190614194565b611073613bff565b6000838152600160205260409081902090516379e3e37b60e11b815273__PAMEncoder____________________________9163f3c7c6f6916110ba91908690600401614f75565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614179565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d40565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c22565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614972565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e19565b6112a25760405162461bcd60e51b81526004016107d390614ed2565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b815260040161132291906149fd565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190614517565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906149da565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e4d565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a9060040161499a565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614179565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149b7565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bac565b61160b6115f13684900384018461441a565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614972565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c49565b600083815260016020526040908190209051630ef392f960e11b815273__PAMEncoder____________________________91631de725f2916116e191908690600401614f75565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061415e565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051633d548cbb60e11b815273__PAMEncoder____________________________91637aa91976916109d891908690600401614f75565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c22565b60008381526001602052604090819020905163e810f93360e01b815273__PAMEncoder____________________________9163e810f933916118e291908690600401614f75565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614114565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614b4f565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25906109859085908490869061497b565b60008181526001602081905260408220015482906001600160a01b0316331480611a065750611a06816000356001600160e01b03191633610ae7565b611a225760405162461bcd60e51b81526004016107d390614bac565b600083815260016020526040812090611a3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611a64575081155b15611a765750600093506108e7915050565b600080611a8284611189565b91509150600080611a9285611189565b9150915084861415611b07578260028801600086601c811115611ab157fe5b601c811115611abc57fe5b8152602081019190915260400160002055600487015460058801541415611aee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611b1d57508215801590611b1d57508083105b80611b4157508083148015611b415750611b368261163f565b611b3f8561163f565b105b15611b84578260028801600086601c811115611b5957fe5b601c811115611b6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611b98575060048701546005880154145b15611bae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61343016565b600082815260016020526040808220905163168bf13960e01b815273__PAMEncoder____________________________9163168bf139916109d891908690600401614f75565b3360009081526002602052604090205460ff16611c6f5760405162461bcd60e51b81526004016107d390614c46565b611ccd89611c82368a90038a018a61441a565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc592505050368990038901896140ac565b8787876134dc565b600089815260016020526040908190209051635276dec160e01b815273__PAMEncoder____________________________91635276dec191611d1491908c90600401614f83565b60006040518083038186803b158015611d2c57600080fd5b505af4158015611d40573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bac565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bac565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611eb55750611eb5816000356001600160e01b03191633610ae7565b611ed15760405162461bcd60e51b81526004016107d390614bac565b600083815260016020526040908190209051635276dec160e01b815273__PAMEncoder____________________________91635276dec191611f1891908690600401614f83565b60006040518083038186803b158015611f3057600080fd5b505af4158015611f44573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b611f80613c6a565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614d40565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051631501b33960e21b815273__PAMEncoder____________________________91635406cce4916120ab91908690600401614f75565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613dfd565b600082815260016020526040808220905163539dda9160e11b815273__PAMEncoder____________________________9163a73bb5229161214191908690600401614f75565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614517565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614d40565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b09565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139eb565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139eb565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613661565b61299c826b465f7374617475734461746560a01b836020015160001b613661565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613661565b6129e7826d465f6d617475726974794461746560901b836060015160001b613661565b612a0a826d465f65786572636973654461746560901b836080015160001b613661565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613661565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613661565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613661565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613661565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613661565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613661565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613661565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613661565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613661565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613661565b612bd38269465f7175616e7469747960b01b83610200015160001b613661565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613661565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613661565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613661565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613661565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369716565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369716565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ac16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ac16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ac16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372816565b60405162461bcd60e51b81526004016107d390614d75565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613661565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613661565b612e33826b6d617475726974794461746560a01b836060015160001b613661565b612e54826b65786572636973654461746560a01b836080015160001b613661565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613661565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613661565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613661565b612ee382691999595058d8dc9d595960b21b83610120015160001b613661565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613661565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613661565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613661565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613661565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613661565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613661565b61300582677175616e7469747960c01b83610200015160001b613661565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613661565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613661565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613661565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613661565b60008181526001602052604081206130ac613a85565b60405163f21917af60e01b815273__PAMEncoder____________________________9063f21917af906130e3908590600401614972565b6107806040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131349190614194565b82549091506000908190819081906131e09061010090046001600160a01b031663dd37acde8760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b8152600401613190939291906152e5565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e4d565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051636e9bd66f60e11b815291938493613273936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051636e9bd66f60e11b81529193849361331b936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460126000818152600287016020526040808220549051636e9bd66f60e11b8152919384936133c3936101009092046001600160a01b03169263dd37acde92613190928b92916004016152e5565b9150915082600014806133df575080158015906133df57508281105b8061340e575080158015906133f357508083145b801561340e57506134038461163f565b61340c8361163f565b105b1561341a578092508193505b50506134268282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613481575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d4575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350c5760405162461bcd60e51b81526004016107d390614bfb565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135495760405162461bcd60e51b81526004016107d390614cf7565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e78188612da0565b6135f7818863ffffffff61294216565b613607818763ffffffff61374f16565b6001600160a01b038216156136205761362088836137b7565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364f9190614972565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367e57613692565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136c062015180875b0461382e565b600c9188016000198101838104949094019650945092509006600101915060006136ea84846138c4565b9050808211156136f8578091505b6201518087066201518061370d86868661394a565b020194508685101561371e57600080fd5b5050505092915050565b600080808061373a62015180876136ba565b91870194509250905060006136ea84846138c4565b60005b8151811015613692576000801b82828151811061376b57fe5b6020026020010151141561377e57613692565b81818151811061378a57fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613752565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382291614a22565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d55750816003145b806138e05750816005145b806138eb5750816007145b806138f65750816008145b80613901575081600a145b8061390c575081600c145b156139195750601f610a2b565b816002146139295750601e610a2b565b613932836139c6565b61393d57601c613940565b601d5b60ff169392505050565b60006107b284101561395b57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399757fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139db57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bb9613bff565b8152602001613bc6613bff565b8152602001613bd3613c49565b8152602001613be0613c49565b8152602001613bed613c49565b8152602001613bfa613c49565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613bfa565b60408051608081019091526000808252602082019081526020016000613c15565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b8161549e565b8051610a2b8161549e565b8051610a2b816154c1565b8051610a2b816154ce565b8035610a2b816154db565b8051610a2b816154f5565b8035610a2b81615502565b8051610a2b81615502565b8051610a2b816154db565b8051610a2b8161551c565b6000608082840312156108e7578081fd5b600060808284031215613d21578081fd5b613d2b6080615407565b9050815181526020820151613d3f816154db565b60208201526040820151613d52816154ce565b60408201526060820151613d65816154b3565b606082015292915050565b600060608284031215613d81578081fd5b613d8b6060615407565b9050815181526020820151613d9f816154db565b60208201526040820151613db2816154b3565b604082015292915050565b600061078082840312156108e7578081fd5b600061028082840312156108e7578081fd5b600060208284031215613df2578081fd5b8135610a288161549e565b600060208284031215613e0e578081fd5b8151610a288161549e565b600060208284031215613e2a578081fd5b8151610a28816154b3565b600060208284031215613e46578081fd5b5035919050565b600060208284031215613e5e578081fd5b5051919050565b60008060408385031215613e77578081fd5b823591506020830135613e898161549e565b809150509250929050565b60008060408385031215613ea6578182fd5b50508035926020909101359150565b600080600060608486031215613ec9578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613ef4578081fd5b8335925060208401356001600160e01b031981168114613f12578182fd5b91506040840135613f228161549e565b809150509250925092565b6000806107a08385031215613f40578182fd5b82359150613f518460208501613dbd565b90509250929050565b6000806000806000806000806000610b208a8c031215613f78578687fd5b89359850613f898b60208c01613dbd565b9750613f998b6107a08c01613dcf565b9650610a208a013567ffffffffffffffff80821115613fb6578687fd5b818c018d601f820112613fc7578788fd5b8035925081831115613fd7578788fd5b8d60208085028301011115613fea578788fd5b602001975090955061400290508b610a408c01613cff565b93506140128b610ac08c01613c91565b92506140228b610ae08c01613c91565b91506140328b610b008c01613c91565b90509295985092959850929598565b6000806102a08385031215614054578182fd5b82359150613f518460208501613dcf565b600060208284031215614076578081fd5b8135610a288161550f565b60008060408385031215614093578182fd5b823561409e8161550f565b946020939093013593505050565b6000608082840312156140bd578081fd5b6140c76080615407565b82356140d28161549e565b815260208301356140e28161549e565b602082015260408301356140f58161549e565b604082015260608301356141088161549e565b60608201529392505050565b600060808284031215614125578081fd5b61412f6080615407565b8251815260208301516020820152604083015161414b816154e8565b60408201526060830151614108816154e8565b60006080828403121561416f578081fd5b610a288383613d10565b60006060828403121561418a578081fd5b610a288383613d70565b600061078082840312156141a6578081fd5b6105806141b281615407565b6141bc8585613cde565b81526141cb8560208601613cb2565b60208201526141dd8560408601613cc8565b60408201526141ef8560608601613ce9565b60608201526142018560808601613ca7565b60808201526142138560a08601613cb2565b60a08201526142258560c08601613cf4565b60c08201526142378560e08601613cf4565b60e082015261010061424b86828701613cb2565b9082015261012061425e86868301613c9c565b9082015261014061427186868301613c9c565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c06143ad86828701613d70565b908201526105206143c086868301613d70565b6104e08301526143d286848701613d10565b6105008301526143e6866106008701613d10565b908201526143f8856106808601613d10565b61054082015261440c856107008601613d10565b610560820152949350505050565b600061028080838503121561442d578182fd5b61443681615407565b6144408585613cbd565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b600060208284031215614528578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061454f57fe5b9052565b61454f81615487565b61454f81615494565b600d811061454f57fe5b6013811061454f57fe5b6004811061454f57fe5b803582526020810135614595816154db565b61459e81615494565b602083015260408101356145b1816154ce565b6145ba81615487565b604083015260608101356145cd816154b3565b8015156060840152505050565b8051825260208101516145ec81615494565b602083015260408101516145ff81615487565b60408301526060908101511515910152565b803582526020810135614623816154db565b61462c81615494565b6020830152604081013561463f816154b3565b8015156040840152505050565b80518252602081015161465e81615494565b60208301526040908101511515910152565b61467b82825161456f565b602081015161468d6020840182614553565b5060408101516146a06040840182614565565b5060608101516146b3606084018261455c565b5060808101516146c66080840182614545565b5060a08101516146d960a0840182614553565b5060c08101516146ec60c0840182614579565b5060e08101516146ff60e0840182614579565b506101008082015161471382850182614553565b50506101208082015161472882850182614538565b50506101408082015161473d82850182614538565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c08082015161487b8285018261464c565b50506104e08101516105206148928185018361464c565b61050083015191506148a86105808501836145da565b82015190506148bb6106008401826145da565b506105408101516148d06106808401826145da565b506105608101516136926107008401826145da565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561494b5783518352928401929184019160010161492f565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d8410614a4557fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107a08101602083810190614fa6908401614fa18387613cd3565b61456f565b614fb08185615448565b614fbd6040850182614553565b5050614fcc6040840184615455565b614fd96060840182614565565b50614fe76060840184615462565b614ff4608084018261455c565b50615002608084018461543b565b61500f60a0840182614545565b5061501d60a0840184615448565b61502a60c0840182614553565b5061503860c084018461546f565b61504560e0840182614579565b5061505360e084018461546f565b61010061506281850183614579565b61506e81860186615448565b91505061012061508081850183614553565b61508c8186018661542e565b91505061014061509e81850183614538565b6150aa8186018661542e565b9150506101606150bc81850183614538565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c0915080850135828501525061521f6104e08401828601614611565b5061523261054083016105208501614611565b6152446105a083016105808501614583565b61525661062083016106008501614583565b6152686106a083016106808501614583565b610b5d61072083016107008501614583565b6000608082019050825182526020830151602083015261529d604084015161547c565b60408301526152af606084015161547c565b606083015292915050565b60808101610a2b82846145da565b60608101610a2b828461464c565b6107808101610a2b8284614670565b6107c081016152f48286614670565b83610780830152601d831061530557fe5b826107a0830152949350505050565b60006102808201905061532882845161455c565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561542657600080fd5b604052919050565b60008235610a288161549e565b60008235610a28816154c1565b60008235610a28816154ce565b60008235610a28816154f5565b60008235610a28816154db565b60008235610a288161551c565b806005811061087157fe5b6002811061549157fe5b50565b6006811061549157fe5b6001600160a01b038116811461549157600080fd5b801515811461549157600080fd5b6009811061549157600080fd5b6002811061549157600080fd5b6006811061549157600080fd5b6005811061549157600080fd5b600d811061549157600080fd5b6013811061549157600080fd5b601d811061549157600080fd5b6004811061549157600080fdfea26469706673582212207bb05d0ebee97651e1be4757975c2ee7b7d10aa8d385b0170339d6947100548a64736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "388:7440:45:-:0;;;484:58;;;;;;;;;-1:-1:-1;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;940:43;;907:6;;940:43;831:159;388:7440:45;;768:104:115;855:10;768:104;:::o;388:7440:45:-;;;;;;;",
  "deployedSourceMap": "388:7440:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:271:8;;;;;;:::i;:::-;;:::i;:::-;;615:176:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:304:16;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3033:494:13:-;;;;;;:::i;:::-;;:::i;3030:271:45:-;;;;;;:::i;:::-;;:::i;1194:397:6:-;;;;;;:::i;:::-;;:::i;2741:280::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1681:158:8:-;;;;;;:::i;:::-;;:::i;2834:190:16:-;;;;;;:::i;:::-;;:::i;1924:805:13:-;;;;;;:::i;:::-;;:::i;931:194:19:-;;;;;;:::i;:::-;;:::i;1970:399:6:-;;;;;;:::i;:::-;;:::i;1767:186:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4660:280:8:-;;;;;;:::i;:::-;;:::i;844:745:13:-;;;;;;:::i;:::-;;:::i;1619:242:19:-;;;;;;:::i;:::-;;:::i;2566:264::-;;;;;;:::i;:::-;;:::i;1596:182:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3581:277::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1689:145:116:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3183:3322:16:-;;;;;;:::i;:::-;;:::i;2090:237:19:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1332:176:16:-;;;;;;:::i;:::-;;:::i;971:196::-;;;;;;:::i;:::-;;:::i;3864:276:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4264:157:8:-;;;;;;:::i;:::-;;:::i;3307:268:45:-;;;;;;:::i;:::-;;:::i;6636:1153:16:-;;;;;;:::i;:::-;;:::i;10335:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4146:311:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3851:539:13:-;;;;;;:::i;:::-;;:::i;8059:2064:16:-;;;;;;:::i;:::-;;:::i;895:46:8:-;;;;;;:::i;:::-;;:::i;1131:237:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2747:277:45:-;;;;;;:::i;:::-;;:::i;987:469::-;;;;;;:::i;:::-;;:::i;2145:203:16:-;;;;;;:::i;:::-;;:::i;10833:248::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1961:225:45:-;;;;;;:::i;:::-;;:::i;4599:179:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1411:101:8:-;;;;;;:::i;:::-;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;2464:277:45:-;;;;;;:::i;:::-;;:::i;2192:266::-;;;;;;:::i;:::-;;:::i;3904:159:8:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1959:180:16:-;;;;;;:::i;:::-;;:::i;5134:271:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;;;;;;;;;5263:17:8::1;5283:15:::0;;;:6:::1;:15;::::0;;;;;;;;:21:::1;::::0;;-1:-1:-1;;;;;5314:29:8;;::::1;-1:-1:-1::0;;;;;;5314:29:8;::::1;;::::0;;;5359:39;;5283:21;::::1;::::0;5290:7;;5359:39:::1;::::0;::::1;::::0;5283:21;;5338:5;;5359:39:::1;:::i;:::-;;;;;;;;811:1:6;5134:271:8::0;;;:::o;615:176:19:-;714:12;;:::i;:::-;749:15;;;;:6;:15;;;;;:35;;:33;:35::i;:::-;742:42;;615:176;;;;:::o;2354:304:16:-;2478:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2501:20:16::1;2524:15:::0;;;:6:::1;:15;::::0;;;;:37;;;;2571:50;;;2524:37;-1:-1:-1;811:1:6::1;2354:304:16::0;;;;:::o;3033:494:13:-;3174:39;3184:7;3193;;-1:-1:-1;;;;;;3193:7:13;3202:10;3174:9;:39::i;:::-;3153:138;;;;-1:-1:-1;;;3153:138:13;;;;;;;:::i;:::-;3302:26;3331:15;;;:6;:15;;;;;;;:25;;:40;;-1:-1:-1;;;;;3382:60:13;;;-1:-1:-1;;;;;;3382:60:13;;;;;;3458:62;;3331:40;;;3458:62;;;;3338:7;;3331:40;;3425:17;;3458:62;:::i;:::-;;;;;;;;3033:494;;;:::o;3030:271:45:-;3198:7;3228:15;;;:6;:15;;;;;;:66;;-1:-1:-1;;;3228:66:45;;:55;;;;:66;;:15;3284:9;;3228:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3221:73;;3030:271;;;;;:::o;1194:397:6:-;1342:39;1352:7;1361;;-1:-1:-1;;;;;;1361:7:6;1370:10;1342:9;:39::i;:::-;1321:133;;;;-1:-1:-1;;;1321:133:6;;;;;;;:::i;:::-;1465:15;;;;1516:4;1465:15;;;;;;;;-1:-1:-1;;;;;;1465:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;1465:48:6;;;;;;;;;;;:55;;-1:-1:-1;;1465:55:6;;;;;;;1536:48;;1472:7;;1536:48;;;;1488:15;;1536:48;:::i;:::-;;;;;;;;1194:397;;;:::o;2741:280::-;2867:4;2908:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2908:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2908:48:6;;;;;;;;;;;;;:96;;-1:-1:-1;2960:15:6;;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;2960:44:6;;;;;;;;;;;;2908:96;2887:127;;2741:280;;;;;;:::o;1681:158:8:-;1784:4;1811:15;;;:6;:15;;;;;:21;;;;1681:158::o;2834:190:16:-;2945:7;2975:15;;;:6;:15;;;;;:42;;;;2834:190::o;1924:805:13:-;2083:35;2121:15;;;:6;:15;;;;;:49;;;-1:-1:-1;;;;;2121:49:13;2202:41;2181:150;;;;-1:-1:-1;;;2181:150:13;;;;;;;:::i;:::-;2362:10;-1:-1:-1;;;;;2362:41:13;;;;:84;;;2407:39;2417:7;2426;;-1:-1:-1;;;;;;2426:7:13;2435:10;2407:9;:39::i;:::-;2341:192;;;;-1:-1:-1;;;2341:192:13;;;;;;;:::i;:::-;2544:15;;;;:6;:15;;;;;;;:49;;:78;;-1:-1:-1;;;;;;2544:78:13;-1:-1:-1;;;;;2544:78:13;;;;;2638:84;;;;;2544:15;;2666:27;;2544:78;;2638:84;:::i;931:194:19:-;1039:12;;:::i;:::-;1074:15;;;;:6;:15;;;;;:44;;:42;:44::i;1970:399:6:-;2119:39;2129:7;2138;;-1:-1:-1;;;;;;2138:7:6;2147:10;2119:9;:39::i;:::-;2098:133;;;;-1:-1:-1;;;2098:133:6;;;;;;;:::i;:::-;2293:5;2242:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2242:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2242:48:6;;;;;;;;;;;:56;;-1:-1:-1;;2242:56:6;;;2314:48;;2249:7;;2314:48;;;;2265:15;;2314:48;:::i;1767:186:16:-;1908:15;;;;:6;:15;;;;;1869:16;;1908:38;;:36;:38::i;4660:280:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;4791:18:8::1;4812:15:::0;;;:6:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;;;;4844:31:8;;::::1;4812:22;4844:31:::0;;::::1;-1:-1:-1::0;;;;;;4844:31:8;::::1;;::::0;;;4891:42;;4812:22;;::::1;::::0;;;::::1;::::0;4819:7;;4891:42:::1;::::0;::::1;::::0;4812:22;;4869:6;;4891:42:::1;:::i;844:745:13:-:0;993:30;1026:15;;;:6;:15;;;;;:44;;;-1:-1:-1;;;;;1026:44:13;1102:36;1081:140;;;;-1:-1:-1;;;1081:140:13;;;;;;;:::i;:::-;1252:10;-1:-1:-1;;;;;1252:36:13;;;;:79;;;1292:39;1302:7;1311;;-1:-1:-1;;;;;;1311:7:13;1320:10;1292:9;:39::i;:::-;1231:182;;;;-1:-1:-1;;;1231:182:13;;;;;;;:::i;:::-;1424:15;;;;:6;:15;;;;;;;:44;;:68;;-1:-1:-1;;;;;;1424:68:13;-1:-1:-1;;;;;1424:68:13;;;;;1508:74;;;;;1424:15;;1536:22;;1424:68;;1508:74;:::i;1619:242:19:-;1756:7;1786:15;;;:6;:15;;;;;:68;;1844:9;1786:68;:57;:68;:::i;2566:264::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2711:49:19::1;;;::::0;;::::1;::::0;::::1;2754:5:::0;2711:49:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:49:::1;:42;:49;:::i;:::-;2797:7;2775:48;2806:5;:16;;;2775:48;;;;;;:::i;:::-;;;;;;;;2566:264:::0;;;:::o;1596:182:45:-;1695:15;;:::i;:::-;1733;;;;:6;:15;;;;;;;:38;;-1:-1:-1;;;1733:38:45;;:36;;;;:38;;:15;:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3581:277::-;3751:9;;:::i;:::-;3783:15;;;;:6;:15;;;;;;;:68;;-1:-1:-1;;;3783:68:45;;:57;;;;:68;;:15;3841:9;;3783:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:116;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::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;3183:3322:16:-;3296:7;3319:44;;:::i;:::-;3366:74;3409:7;-1:-1:-1;;;3366:42:16;:74::i;:::-;3481:26;;3319:121;;-1:-1:-1;3481:40:16;;;;:98;;-1:-1:-1;3553:26:16;3525:19;:24;;;:54;;;;;;;;;3481:98;3477:2994;;;3623:26;;3716:27;;;;3834:65;;-1:-1:-1;;;3834:65:16;;-1:-1:-1;;;;;3834:46:16;;;;;:65;;3623:26;;3834:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3809:190;;;;-1:-1:-1;;;3809:190:16;;;;;;;:::i;:::-;4014:20;4037:54;4067:7;-1:-1:-1;;;4037:29:16;:54::i;:::-;4014:77;;4105:42;4170:64;4200:7;-1:-1:-1;;;4170:29:16;:64::i;:::-;4150:85;;;;;;;;;;4105:130;;4249:49;4336:18;-1:-1:-1;;;;;4321:64:16;;4386:17;4321:106;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4301:127;;;;;;;;;;4249:179;;4442:35;4495:18;-1:-1:-1;;;;;4480:64:16;;4545:17;4480:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4442:142;-1:-1:-1;4659:16:16;;4655:258;;4749:149;4782:13;4865:15;4749:11;:149::i;:::-;4742:156;;;;;;;;;;;4655:258;5075:22;5049;:48;;;;;;;;;;:123;;;;;5150:22;5117:55;;;;;;;;:29;:55;;;;;;;;;5049:123;5028:1433;;;5349:22;5316:29;:55;;;;;;;;;5312:1135;;;5402:124;5439:12;5477:27;5402:11;:124::i;5312:1135::-;5588:22;5555:29;:55;;;;;;;;;5551:896;;;5634:31;;:::i;:::-;5668:100;;-1:-1:-1;;;5668:100:16;;-1:-1:-1;;;;;5668:66:16;;;;;:100;;5735:17;;5668:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5634:134;;5797:171;5834:12;5872:74;5895:21;5918:27;5872:22;:74::i;5797:171::-;5790:178;;;;;;;;;;;;5551:896;6030:22;5997:29;:55;;;;;;;;;5993:454;;;6076:37;;:::i;:::-;6116:106;;-1:-1:-1;;;6116:106:16;;-1:-1:-1;;;;;6116:66:16;;;;;:106;;6183:17;;6116:106;;;:::i;5993:454::-;3477:2994;;;;;;;-1:-1:-1;6496:1:16;;3183:3322;-1:-1:-1;;3183:3322:16:o;2090:237:19:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2226:40:19::1;;;::::0;;::::1;::::0;::::1;2260:5:::0;2226:40:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:40:::1;:33;:40;:::i;:::-;2294:7;2281:39;2303:5;:16;;;2281:39;;;;;;:::i;956:145:82:-:0;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1332:176:16:-;1440:7;1470:15;;;:6;:15;;;;;:31;;;;1332:176::o;971:196::-;1092:7;1122:15;;;:6;:15;;;;;;;;:38;;;:31;;;;:38;;;;;;971:196::o;3864:276:45:-;4033:10;;:::i;:::-;4066:15;;;;:6;:15;;;;;;;:67;;-1:-1:-1;;;4066:67:45;;:56;;;;:67;;:15;4123:9;;4066:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4264:157:8:-;4363:7;4393:15;;;:6;:15;;;;;;;;:21;;-1:-1:-1;;;;;4393:21:8;;4264:157::o;3307:268:45:-;3474:6;3503:15;;;:6;:15;;;;;;:65;;-1:-1:-1;;;3503:65:45;;:54;;;;:65;;:15;3558:9;;3503:65;;;:::i;6636:1153:16:-;6748:7;6793:15;;;:6;:15;;;;;6748:7;6844:27;6800:7;6844:18;:27::i;:::-;6931:32;;;;6881:25;6909:55;;;:21;;;:55;;;;;;6979:21;;;;6818:53;;-1:-1:-1;6909:55:16;6979:26;:59;;;;-1:-1:-1;7009:29:16;;6979:59;6975:82;;;-1:-1:-1;7055:1:16;;-1:-1:-1;7040:17:16;;-1:-1:-1;;7040:17:16;6975:82;7069:34;7105:35;7144:28;7156:15;7144:11;:28::i;:::-;7068:104;;;;7183:36;7221:37;7262:30;7274:17;7262:11;:30::i;:::-;7182:110;;;;7321:29;7354:1;7321:34;:135;;;-1:-1:-1;7360:32:16;;;;;:95;;;7426:29;7396:27;:59;7360:95;7320:350;;;;7522:29;7491:27;:60;:165;;;;;7614:42;7629:26;7614:14;:42::i;:::-;7571:40;7586:24;7571:14;:40::i;:::-;:85;7491:165;7303:480;;;7702:15;7695:22;;;;;;;;;;;7303:480;7755:17;7748:24;;;;;;;;;;;10335:286;10456:4;10505:15;;;:6;:15;;;;;;;;:34;;;:26;;;;:34;;;;:44;;10563:41;;;10505:44;;;;;10335:286::o;4146:311:45:-;4327:24;;:::i;:::-;4374:15;;;;:6;:15;;;;;;;:76;;-1:-1:-1;;;4374:76:45;;:65;;;;:76;;:15;4440:9;;4374:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3851:539:13:-;4002:39;4012:7;4021;;-1:-1:-1;;;;;;4021:7:13;4030:10;4002:9;:39::i;:::-;3981:143;;;;-1:-1:-1;;;3981:143:13;;;;;;;:::i;:::-;4135:31;4169:15;;;:6;:15;;;;;;;:45;;;;-1:-1:-1;;;;;4225:70:13;;;-1:-1:-1;;;;;;4225:70:13;;;;;;4311:72;;4169:45;;;4311:72;;;;4176:7;;4169:45;;4273:22;;4311:72;:::i;8059:2064:16:-;8189:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;8212:19:16::1;8234:15:::0;;;:6:::1;:15;::::0;;;;;8285:27:::1;8241:7:::0;8285:18:::1;:27::i;:::-;8372:32:::0;;;;8322:25:::1;8350:55:::0;;;:21;;;:55:::1;::::0;;;;;8420:21;;;;8259:53;;-1:-1:-1;8350:55:16;8420:26;:59;::::1;;;-1:-1:-1::0;8450:29:16;;8420:59:::1;8416:82;;;-1:-1:-1::0;8496:1:16::1;::::0;-1:-1:-1;8481:17:16::1;::::0;-1:-1:-1;;8481:17:16::1;8416:82;8510:34;8546:35:::0;8585:28:::1;8597:15;8585:11;:28::i;:::-;8509:104;;;;8624:36;8662:37:::0;8703:30:::1;8715:17;8703:11;:30::i;:::-;8623:110;;;;8853:17;8834:15;:36;8830:399;;;8959:27:::0;8886:14:::1;::::0;::::1;:44;8931:24:::0;8886:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8886:70:16;:100;9040:21;;;;9004:32;;;;:57:::1;9000:80;;;-1:-1:-1::0;9078:1:16::1;::::0;-1:-1:-1;9063:17:16::1;::::0;-1:-1:-1;;;;;;9063:17:16::1;9000:80;-1:-1:-1::0;;;9094:32:16;;;;:37;;9130:1:::1;9094:37;::::0;;-1:-1:-1;9203:15:16;-1:-1:-1;9196:22:16::1;::::0;-1:-1:-1;9196:22:16::1;8830:399;9326:34:::0;;;:135:::1;;-1:-1:-1::0;9365:32:16;;;::::1;::::0;:95:::1;;;9431:29;9401:27;:59;9365:95;9325:350;;;;9527:29;9496:27;:60;:165;;;;;9619:42;9634:26;9619:14;:42::i;:::-;9576:40;9591:24;9576:14;:40::i;:::-;:85;9496:165;9308:809;;;9773:27:::0;9700:14:::1;::::0;::::1;:44;9745:24:::0;9700:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9700:70:16;:100;-1:-1:-1;9821:15:16;;-1:-1:-1;9814:22:16::1;::::0;-1:-1:-1;;;;;9814:22:16::1;9308:809;9871:34:::0;;;:95:::1;;-1:-1:-1::0;9945:21:16;;;;9909:32;;;;:57:::1;9871:95;9867:151;;;-1:-1:-1::0;10001:1:16::1;::::0;-1:-1:-1;9986:17:16::1;::::0;-1:-1:-1;;;;;;9986:17:16::1;9867:151;-1:-1:-1::0;;;10031:32:16;;;;:37;;10067:1:::1;10031:37;::::0;;10089:17;-1:-1:-1;10082:24:16::1;::::0;-1:-1:-1;;10082:24:16::1;895:46:8::0;;;;;;;;;;;;;;;:::o;1131:237:19:-;1268:5;1296:15;;;:6;:15;;;;;:65;;1351:9;1296:65;:54;:65;:::i;2747:277:45:-;2918:7;2948:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2948:69:45;;:58;;;;:69;;:15;3007:9;;2948:69;;;:::i;987:469::-;1023:10:8;1008:26;;;;:14;:26;;;;;;;;987:125;;;;-1:-1:-1;;;987:125:8;;;;;;;:::i;:::-;1329:67:45::1;1338:7:::0;1329:67:::1;;::::0;;::::1;::::0;::::1;1347:5:::0;1329:67:::1;:::i;:::-;1354:8;;1329:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1329:67:45::1;::::0;-1:-1:-1;;;1329:67:45::1;::::0;;::::1;::::0;::::1;1364:9:::0;1329:67:::1;:::i;:::-;1375:6;1383:5;1390;1329:8;:67::i;:::-;1406:15;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;1406:43:45;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;1443:5;;1406:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;987:469:::0;;;;;;;;;:::o;2145:203:16:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;2289:15:16::1;::::0;;;:6:::1;:15;::::0;;;;;:37;;:52;2145:203::o;10833:248::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;11026:48:16::1;::::0;;;;::::1;::::0;;11050:4:::1;11026:48:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10989:15:16;;;;;;;;;:34;;;:26:::1;::::0;;::::1;:34:::0;;;;;:85;;;;-1:-1:-1;;10989:85:16::1;::::0;::::1;;;::::0;;;;::::1;::::0;10833:248::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;1961:225:45:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2100:15:45::1;::::0;;;:6:::1;:15;::::0;;;;;;:43;;-1:-1:-1;;;2100:43:45;;:36:::1;::::0;::::1;::::0;:43:::1;::::0;:15;2137:5;;2100:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2158:21:45::1;::::0;2171:7;;-1:-1:-1;2158:21:45::1;::::0;-1:-1:-1;2158:21:45;;::::1;1961:225:::0;;;:::o;4599:179:13:-;4702:21;;:::i;:::-;-1:-1:-1;4746:15:13;;;;:6;:15;;;;;;;;;4739:32;;;;;;;4746:25;;;4739:32;-1:-1:-1;;;;;4739:32:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:179::o;1411:101:8:-;1280:12:116;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;1477:21:8::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;1477:28:8::1;1501:4;1477:28;::::0;;1411:101::o;3276:186:6:-;3382:4;3410:15;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3410:44:6;;;;;;;;;;;;;;;3276:186::o;2464:277:45:-;2635:7;2665:15;;;:6;:15;;;;;;:69;;-1:-1:-1;;;2665:69:45;;:58;;;;:69;;:15;2724:9;;2665:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2192:266::-;2360:5;2388:15;;;:6;:15;;;;;;:63;;-1:-1:-1;;;2388:63:45;;:52;;;;:63;;:15;2441:9;;2388:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3904:159:8:-;4004:7;4034:15;;;:6;:15;;;;;:22;;;;-1:-1:-1;;;;;4034:22:8;;3904:159::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;1959:180:16:-;2065:7;2095:15;;;:6;:15;;;;;:37;;;;1959:180::o;4420:1363:18:-;4491:12;;:::i;:::-;4522:1254;;;;;;;;-1:-1:-1;;;;4575:40:18;;;:17;;;:40;;;;;;;4522:1254;;4619:3;4575:47;4541:84;;;;;;;;4522:1254;;;;;;;;;;-1:-1:-1;;;4647:31:18;;;;:17;;;4522:1254;4647:31;;;;;;;;4522:1254;;;;-1:-1:-1;;;4701:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4762:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4818:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4874:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4934:34:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5003:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5063:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5121:31:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5174:40:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5236:46:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5304:46:18;;;;;;;;;4522:1254;;;;5372:51;;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5445:35:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5503:37:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5562:29:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5613:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5673:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5728:37:18;;;;;;;;4522:1254;;;;;4515:1261;-1:-1:-1;4420:1363:18;;;:::o;5866:1400::-;5946:12;;:::i;:::-;5977:1282;;;;;;;;-1:-1:-1;;;;6030:42:18;;;:17;;;:42;;;;;;;5977:1282;;6076:3;6030:49;5996:86;;;;;;;;5977:1282;;;;;;;;;;-1:-1:-1;;;6104:33:18;;;;:17;;;5977:1282;6104:33;;;;;;;;5977:1282;;;;-1:-1:-1;;;6160:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6223:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6281:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6339:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6401:36:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6460:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6522:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6582:33:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6637:42:18;;;;;;;;;5977:1282;;;;6701:48;;;;;;;;;;5977:1282;;;;6771:48;;;;;;;;;;5977:1282;;;;6841:53;;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6916:37:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6976:39:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7037:31:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7090:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7152:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7209:39:18;;;;;;;;5977:1282;;;;;5970:1289;-1:-1:-1;5866:1400:18;;;:::o;448:324:15:-;522:16;550:25;592:5;:14;;:21;;;578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;578:36:15;-1:-1:-1;550:64:15;-1:-1:-1;630:9:15;625:115;649:21;;;;645:25;;625:115;;;705:24;;;;:21;;;:24;;;;;;691:11;;:8;;727:1;;691:11;;;;;;;;;;;;;;;:38;672:3;;625:115;;;-1:-1:-1;757:8:15;448:324;-1:-1:-1;;448:324:15:o;7794:218:18:-;7935:7;7973:31;;;:17;;;;;:31;;;;;;;7794:218::o;2426:1921::-;2522:109;2541:5;-1:-1:-1;;;2627:3:18;2595:5;:25;;;2589:32;;;;;;;;2581:41;;2573:57;;2522:18;:109::i;:::-;2641:68;2660:5;-1:-1:-1;;;2691:5:18;:16;;;2683:25;;2641:18;:68::i;:::-;2719:82;2738:5;-1:-1:-1;;;2776:5:18;:23;;;2768:32;;2719:18;:82::i;:::-;2811:72;2830:5;-1:-1:-1;;;2863:5:18;:18;;;2855:27;;2811:18;:72::i;:::-;2893;2912:5;-1:-1:-1;;;2945:5:18;:18;;;2937:27;;2893:18;:72::i;:::-;2975:78;2994:5;-1:-1:-1;;;3030:5:18;:21;;;3022:30;;2975:18;:78::i;:::-;3063:82;3082:5;-1:-1:-1;;;3120:5:18;:23;;;3112:32;;3063:18;:82::i;:::-;3155:78;3174:5;-1:-1:-1;;;3210:5:18;:21;;;3202:30;;3155:18;:78::i;:::-;3243:68;3262:5;-1:-1:-1;;;3293:5:18;:16;;;3285:25;;3243:18;:68::i;:::-;3321:86;3340:5;-1:-1:-1;;;3380:5:18;:25;;;3372:34;;3321:18;:86::i;:::-;3417:98;3436:5;3417:98;3482:5;:31;;;3474:40;;3417:18;:98::i;:::-;3525;3544:5;3525:98;3590:5;:31;;;3582:40;;3525:18;:98::i;:::-;3633:108;3652:5;3633:108;3703:5;:36;;;3695:45;;3633:18;:108::i;:::-;3751:76;3770:5;-1:-1:-1;;;3805:5:18;:20;;;3797:29;;3751:18;:76::i;:::-;3838:80;3857:5;-1:-1:-1;;;3894:5:18;:22;;;3886:31;;3838:18;:80::i;:::-;3928:64;3947:5;-1:-1:-1;;;3976:5:18;:14;;;3968:23;;3928:18;:64::i;:::-;4002:82;4021:5;-1:-1:-1;;;4059:5:18;:23;;;4051:32;;4002:18;:82::i;:::-;4094:72;4113:5;-1:-1:-1;;;4146:5:18;:18;;;4138:27;;4094:18;:72::i;:::-;4176:80;4195:5;-1:-1:-1;;;4232:5:18;:22;;;4224:31;;4176:18;:80::i;:::-;4266:74;4285:5;-1:-1:-1;;;4319:5:18;:19;;;4311:28;;4266:18;:74::i;:::-;2426:1921;;:::o;768:104:115:-;855:10;768:104;:::o;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;481:1872:18:-;568:107;587:5;-1:-1:-1;;;671:3:18;639:5;:25;;;633:32;;;;;;;568:107;685:66;704:5;-1:-1:-1;;;733:5:18;:16;;;725:25;;685:18;:66::i;:::-;761:80;780:5;-1:-1:-1;;;816:5:18;:23;;;808:32;;761:18;:80::i;:::-;851:70;870:5;-1:-1:-1;;;901:5:18;:18;;;893:27;;851:18;:70::i;:::-;931;950:5;-1:-1:-1;;;981:5:18;:18;;;973:27;;931:18;:70::i;:::-;1011:76;1030:5;-1:-1:-1;;;1064:5:18;:21;;;1056:30;;1011:18;:76::i;:::-;1097:80;1116:5;-1:-1:-1;;;1152:5:18;:23;;;1144:32;;1097:18;:80::i;:::-;1187:76;1206:5;-1:-1:-1;;;1240:5:18;:21;;;1232:30;;1187:18;:76::i;:::-;1273:66;1292:5;-1:-1:-1;;;1321:5:18;:16;;;1313:25;;1273:18;:66::i;:::-;1349:84;1368:5;-1:-1:-1;;;1406:5:18;:25;;;1398:34;;1349:18;:84::i;:::-;1443:96;1462:5;-1:-1:-1;;;1506:5:18;:31;;;1498:40;;1443:18;:96::i;:::-;1549;1568:5;-1:-1:-1;;;1612:5:18;:31;;;1604:40;;1549:18;:96::i;:::-;1655:106;1674:5;1655:106;1723:5;:36;;;1715:45;;1655:18;:106::i;:::-;1771:74;1790:5;-1:-1:-1;;;1823:5:18;:20;;;1815:29;;1771:18;:74::i;:::-;1856:78;1875:5;-1:-1:-1;;;1910:5:18;:22;;;1902:31;;1856:18;:78::i;:::-;1944:62;1963:5;-1:-1:-1;;;1990:5:18;:14;;;1982:23;;1944:18;:62::i;:::-;2016:80;2035:5;-1:-1:-1;;;2071:5:18;:23;;;2063:32;;2016:18;:80::i;:::-;2106:70;2125:5;-1:-1:-1;;;2156:5:18;:18;;;2148:27;;2106:18;:70::i;:::-;2186:78;2205:5;-1:-1:-1;;;2240:5:18;:22;;;2232:31;;2186:18;:78::i;:::-;2274:72;2293:5;-1:-1:-1;;;2325:5:18;:19;;;2317:28;;2274:18;:72::i;4463:3363:45:-;4587:7;4632:15;;;:6;:15;;;;;4657:21;;:::i;:::-;4681:28;;-1:-1:-1;;;4681:28:45;;:26;;;;:28;;:5;;:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4897:12;;4657:52;;-1:-1:-1;4720:23:45;;;;;;;;4874:203;;4897:12;;;-1:-1:-1;;;;;4897:12:45;4886:47;4657:52;4974:14;;;4720:23;5019:12;4974:58;;;;;;;;;;;;5050:12;4886:190;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4874:203::-;4822:255;;;;5114:22;5140:1;5114:27;5113:94;;;;5184:22;5163:18;:43;5113:94;:221;;;;5254:18;5228:22;:44;:105;;;;;5304:29;5319:13;5304:14;:29::i;:::-;5276:25;5291:9;5276:14;:25::i;:::-;:57;5228:105;5092:376;;;5392:18;5367:43;;5444:9;5428:25;;5092:376;-1:-1:-1;;5593:12:45;;5715:14;5519:19;5670:60;;;:14;;;:60;;;;;;;5582:194;;-1:-1:-1;;;5582:194:45;;5519:19;;;;5570:207;;5593:12;;;;-1:-1:-1;;;;;5593:12:45;;5582:47;;:194;;5647:5;;5670:60;5582:194;;;:::i;5570:207::-;5518:259;;;;5814:22;5840:1;5814:27;5813:121;;;-1:-1:-1;5863:23:45;;;;;:70;;;5911:22;5890:18;:43;5863:70;5813:275;;;-1:-1:-1;5955:23:45;;;;;:71;;;6008:18;5982:22;:44;5955:71;:132;;;;;6058:29;6073:13;6058:14;:29::i;:::-;6030:25;6045:9;6030:14;:25::i;:::-;:57;5955:132;5792:430;;;6146:18;6121:43;;6198:9;6182:25;;5792:430;-1:-1:-1;;6353:12:45;;6475;6279:19;6430:58;;;:14;;;:58;;;;;;;6342:190;;-1:-1:-1;;;6342:190:45;;6279:19;;;;6330:203;;6353:12;;;;-1:-1:-1;;;;;6353:12:45;;6342:47;;:190;;6407:5;;6430:58;6342:190;;;:::i;6330:203::-;6278:255;;;;6570:22;6596:1;6570:27;6569:121;;;-1:-1:-1;6619:23:45;;;;;:70;;;6667:22;6646:18;:43;6619:70;6569:275;;;-1:-1:-1;6711:23:45;;;;;:71;;;6764:18;6738:22;:44;6711:71;:132;;;;;6814:29;6829:13;6814:14;:29::i;:::-;6786:25;6801:9;6786:14;:25::i;:::-;:57;6711:132;6548:430;;;6902:18;6877:43;;6954:9;6938:25;;6548:430;-1:-1:-1;;7109:12:45;;7231;7035:19;7186:58;;;:14;;;:58;;;;;;;7098:190;;-1:-1:-1;;;7098:190:45;;7035:19;;;;7086:203;;7109:12;;;;-1:-1:-1;;;;;7109:12:45;;7098:47;;:190;;7163:5;;7186:58;7098:190;;;:::i;7086:203::-;7034:255;;;;7326:22;7352:1;7326:27;7325:121;;;-1:-1:-1;7375:23:45;;;;;:70;;;7423:22;7402:18;:43;7375:70;7325:275;;;-1:-1:-1;7467:23:45;;;;;:71;;;7520:18;7494:22;:44;7467:71;:132;;;;;7570:29;7585:13;7570:14;:29::i;:::-;7542:25;7557:9;7542:14;:25::i;:::-;:57;7467:132;7304:430;;;7658:18;7633:43;;7710:9;7694:25;;7304:430;4463:3363;;7769:50;7781:13;7796:22;7769:11;:50::i;:::-;7762:57;4463:3363;-1:-1:-1;;;;;;4463:3363:45:o;7273:515:18:-;7411:5;-1:-1:-1;;;7436:12:18;:46;7432:350;;;-1:-1:-1;;;;7519:40:18;;;;:17;;;:40;;;;;;7563:3;7519:47;7498:70;;7432:350;-1:-1:-1;;;7589:12:18;:48;7585:197;;;-1:-1:-1;;;;7674:42:18;;;;:17;;;:42;;;;;;7720:3;7674:49;7653:72;;7585:197;-1:-1:-1;7769:1:18;7756:15;;2593:1097:8;2847:19;2869:15;;;:6;:15;;;;;2988:11;;;;:20;2967:110;;;;-1:-1:-1;;;2967:110:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:21:8;;;;;;:14;:21;;;;;;;;:29;;:21;:29;3155:117;;;;-1:-1:-1;;;3155:117:8;;;;;;;:::i;:::-;3283:18;;3311:27;;:15;;;:27;;-1:-1:-1;;;;;;3311:27:8;;;-1:-1:-1;;;;;3311:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3283:18:8;;;-1:-1:-1;3283:18:8;;;-1:-1:-1;;;;;;3348:21:8;3283:18;3348:21;;;;;;;3379:11;;:19;;;;;;;;;;;3409:30;3283:18;3433:5;3409:23;:30::i;:::-;3449:39;:5;3482;3449:39;:32;:39;:::i;:::-;3498:36;:5;3525:8;3498:36;:26;:36;:::i;:::-;-1:-1:-1;;;;;3592:19:8;;;3588:55;;3613:30;3628:7;3637:5;3613:14;:30::i;:::-;3659:24;3675:7;3659:24;;;;;;:::i;:::-;;;;;;;;2593:1097;;;;;;;;:::o;166:252:18:-;314:31;;;;:17;;;:31;;;;;;:40;;310:53;;;356:7;;310:53;372:31;;;;:17;;;:31;;;;;:39;;;166:252;;;;:::o;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:11;:40::i;:::-;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;137:305:15:-;239:9;234:202;258:8;:15;254:1;:19;234:202;;;321:1;313:10;;298:8;307:1;298:11;;;;;;;;;;;;;;:25;294:36;;;325:5;;294:36;371:8;380:1;371:11;;;;;;;;;;;;;;;;;;;344:24;;;;:21;;;:24;;;;;;;:38;:21;420:5;396:21;;;:29;;;234:202;;3721:194:6;3798:15;;;;3845:4;3798:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3798:44:6;;;;;;;;;;:51;;-1:-1:-1;;3798:51:6;;;;;;;3864:44;;3798;;3805:7;;3864:44;;;;;:::i;:::-;;;;;;;;3721:194;;:::o;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;2045:511::-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;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;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;142:134::-;220:13;;238:33;220:13;238:33;:::i;1531:188::-;1636:13;;1654:60;1636:13;1654:60;:::i;1891:162::-;1983:13;;2001:47;1983:13;2001:47;:::i;2060:180::-;2152:20;;2177:58;2152:20;2177:58;:::i;2810:170::-;2906:13;;2924:51;2906:13;2924:51;:::i;2987:166::-;3072:20;;3097:51;3072:20;3097:51;:::i;3160:170::-;3256:13;;3274:51;3256:13;3274:51;:::i;3522:182::-;3624:13;;3642:57;3624:13;3642:57;:::i;5071:168::-;5166:13;;5184:50;5166:13;5184:50;:::i;6210:166::-;;6328:3;6319:6;6314:3;6310:16;6306:26;6303:2;;;-1:-1;;6335:12;8174:810;;8296:4;8284:9;8279:3;8275:19;8271:30;8268:2;;;-1:-1;;8304:12;8268:2;8332:20;8296:4;8332:20;:::i;:::-;8323:29;;21602:6;21596:13;8413:16;8406:86;8550:2;8626:9;8622:22;3624:13;3642:57;3693:5;3642:57;:::i;:::-;8550:2;8565:16;;8558:93;8709:2;8781:22;;1983:13;2001:47;1983:13;2001:47;:::i;:::-;8709:2;8724:16;;8717:93;8872:2;8934:22;;867:13;885:30;867:13;885:30;:::i;:::-;8872:2;8887:16;;8880:83;8891:5;8262:722;-1:-1;;8262:722::o;9007:650::-;;9128:4;9116:9;9111:3;9107:19;9103:30;9100:2;;;-1:-1;;9136:12;9100:2;9164:20;9128:4;9164:20;:::i;:::-;9155:29;;21602:6;21596:13;9245:16;9238:86;9382:2;9458:9;9454:22;3624:13;3642:57;3693:5;3642:57;:::i;:::-;9382:2;9397:16;;9390:93;9545:2;9607:22;;867:13;885:30;867:13;885:30;:::i;:::-;9545:2;9560:16;;9553:83;9564:5;9094:563;-1:-1;;9094:563::o;9688:162::-;;9801:4;9792:6;9787:3;9783:16;9779:27;9776:2;;;-1:-1;;9809:12;17834:158;;17944:3;17935:6;17930:3;17926:16;17922:26;17919:2;;;-1:-1;;17951:12;21796:241;;21900:2;21888:9;21879:7;21875:23;21871:32;21868:2;;;-1:-1;;21906:12;21868:2;85:6;72:20;97:33;124:5;97:33;:::i;22044:263::-;;22159:2;22147:9;22138:7;22134:23;22130:32;22127:2;;;-1:-1;;22165:12;22127:2;226:6;220:13;238:33;265:5;238:33;:::i;22314:257::-;;22426:2;22414:9;22405:7;22401:23;22397:32;22394:2;;;-1:-1;;22432:12;22394:2;873:6;867:13;885:30;909:5;885:30;:::i;22578:241::-;;22682:2;22670:9;22661:7;22657:23;22653:32;22650:2;;;-1:-1;;22688:12;22650:2;-1:-1;994:20;;22644:175;-1:-1;22644:175::o;22826:263::-;;22941:2;22929:9;22920:7;22916:23;22912:32;22909:2;;;-1:-1;;22947:12;22909:2;-1:-1;1142:13;;22903:186;-1:-1;22903:186::o;23096:366::-;;;23217:2;23205:9;23196:7;23192:23;23188:32;23185:2;;;-1:-1;;23223:12;23185:2;1007:6;994:20;23275:63;;23375:2;23418:9;23414:22;72:20;97:33;124:5;97:33;:::i;:::-;23383:63;;;;23179:283;;;;;:::o;23469:366::-;;;23590:2;23578:9;23569:7;23565:23;23561:32;23558:2;;;-1:-1;;23596:12;23558:2;-1:-1;;994:20;;;23748:2;23787:22;;;994:20;;-1:-1;23552:283::o;23842:489::-;;;;23979:2;23967:9;23958:7;23954:23;23950:32;23947:2;;;-1:-1;;23985:12;23947:2;-1:-1;;994:20;;;24137:2;24176:22;;994:20;;-1:-1;24245:2;24283:22;;;5972:20;;23941:390;-1:-1;23941:390::o;24338:489::-;;;;24475:2;24463:9;24454:7;24450:23;24446:32;24443:2;;;-1:-1;;24481:12;24443:2;994:20;;;-1:-1;24633:2;24671:22;;1271:20;-1:-1;;;;;;92345:78;;99520:34;;99510:2;;-1:-1;;99558:12;99510:2;24641:62;-1:-1;24740:2;24779:22;;72:20;97:33;72:20;97:33;:::i;:::-;24748:63;;;;24437:390;;;;;:::o;24834:426::-;;;24984:4;24972:9;24963:7;24959:23;24955:34;24952:2;;;-1:-1;;24992:12;24952:2;1007:6;994:20;25044:63;;25162:82;25236:7;25144:2;25216:9;25212:22;25162:82;:::i;:::-;25152:92;;24946:314;;;;;:::o;25267:1464::-;;;;;;;;;;25614:4;25602:9;25593:7;25589:23;25585:34;25582:2;;;-1:-1;;25622:12;25582:2;1007:6;994:20;25674:63;;25792:82;25866:7;25774:2;25846:9;25842:22;25792:82;:::i;:::-;25782:92;;25931:79;26002:7;25911:4;25982:9;25978:22;25931:79;:::i;:::-;25921:89;;26075:4;26064:9;26060:20;26047:34;26101:18;;26093:6;26090:30;26087:2;;;-1:-1;;26123:12;26087:2;26224:6;26213:9;26209:22;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;482:6;469:20;459:30;;26101:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;25774:2;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;25774;563:17;;-1:-1;26143:98;;-1:-1;26298:87;;-1:-1;26377:7;26278:4;26353:22;;26298:87;:::i;:::-;26288:97;;26442:53;26487:7;26422:4;26467:9;26463:22;26442:53;:::i;:::-;26432:63;;26552:53;26597:7;26532:4;26577:9;26573:22;26552:53;:::i;:::-;26542:63;;26662:53;26707:7;26642:4;26687:9;26683:22;26662:53;:::i;:::-;26652:63;;25576:1155;;;;;;;;;;;:::o;26738:419::-;;;26885:3;26873:9;26864:7;26860:23;26856:33;26853:2;;;-1:-1;;26892:12;26853:2;1007:6;994:20;26944:63;;27062:79;27133:7;27044:2;27113:9;27109:22;27062:79;:::i;27537:271::-;;27656:2;27644:9;27635:7;27631:23;27627:32;27624:2;;;-1:-1;;27662:12;27624:2;4188:6;4175:20;4200:48;4242:5;4200:48;:::i;27815:396::-;;;27951:2;27939:9;27930:7;27926:23;27922:32;27919:2;;;-1:-1;;27957:12;27919:2;4188:6;4175:20;4200:48;4242:5;4200:48;:::i;:::-;28009:78;28124:2;28163:22;;;;21448:20;;-1:-1;;;27913:298::o;28486:306::-;;28622:3;28610:9;28601:7;28597:23;28593:33;28590:2;;;-1:-1;;28629:12;28590:2;6568:20;28622:3;6568:20;:::i;:::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6655:75;;6805:2;6859:22;;72:20;97:33;72:20;97:33;:::i;:::-;6805:2;6820:16;;6813:75;6964:2;7018:22;;72:20;97:33;72:20;97:33;:::i;:::-;6964:2;6979:16;;6972:75;7127:2;7181:22;;72:20;97:33;72:20;97:33;:::i;:::-;7127:2;7142:16;;7135:75;7146:5;28584:208;-1:-1;;;28584:208::o;28799:336::-;;28950:3;28938:9;28929:7;28925:23;28921:33;28918:2;;;-1:-1;;28957:12;28918:2;7441:20;28950:3;7441:20;:::i;:::-;7577:22;1142:13;7527:16;7520:86;7670:2;7739:9;7735:22;1142:13;7670:2;7689:5;7685:16;7678:86;7826:2;7922:9;7918:22;2352:13;2370:60;2424:5;2370:60;:::i;:::-;7826:2;7841:16;;7834:113;8008:2;8100:22;;2352:13;2370:60;2352:13;2370:60;:::i;29142:308::-;;29279:3;29267:9;29258:7;29254:23;29250:33;29247:2;;;-1:-1;;29286:12;29247:2;29348:86;29426:7;29402:22;29348:86;:::i;29457:305::-;;29593:2;29581:9;29572:7;29568:23;29564:32;29561:2;;;-1:-1;;29599:12;29561:2;29661:85;29738:7;29714:22;29661:85;:::i;29769:319::-;;29911:4;29899:9;29890:7;29886:23;29882:34;29879:2;;;-1:-1;;29919:12;29879:2;10059:6;10044:22;10059:6;10044:22;:::i;:::-;10156:78;10230:3;10206:22;10156:78;:::i;:::-;10138:16;10131:104;10333:74;10403:3;10300:2;10383:9;10379:22;10333:74;:::i;:::-;10300:2;10319:5;10315:16;10308:100;10510:78;10584:3;10477:2;10564:9;10560:22;10510:78;:::i;:::-;10477:2;10496:5;10492:16;10485:104;10697:84;10777:3;10664:2;10757:9;10753:22;10697:84;:::i;:::-;10664:2;10683:5;10679:16;10672:110;10894:87;10977:3;10860;10957:9;10953:22;10894:87;:::i;:::-;10860:3;10880:5;10876:16;10869:113;11093:86;11175:3;11059;11155:9;11151:22;11093:86;:::i;:::-;11059:3;11079:5;11075:16;11068:112;11284:79;11359:3;11250;11339:9;11335:22;11284:79;:::i;:::-;11250:3;11270:5;11266:16;11259:105;11466:77;11539:3;11432;11519:9;11515:22;11466:77;:::i;:::-;11432:3;11452:5;11448:16;11441:103;11609:3;11645:74;11715:3;11609;11695:9;11691:22;11645:74;:::i;:::-;11625:18;;;11618:102;11785:3;11821:60;11877:3;11853:22;;;11821:60;:::i;:::-;11801:18;;;11794:88;11957:3;11993:60;12049:3;12025:22;;;11993:60;:::i;:::-;11973:18;;;11966:88;12136:3;12204:22;;;1142:13;12152:18;;;12145:88;12306:3;12374:22;;;21596:13;12322:18;;;12315:88;12470:3;12538:22;;;21596:13;12486:18;;;12479:88;12643:3;12711:22;;;21596:13;12659:18;;;12652:88;12809:3;12877:22;;;21596:13;12825:18;;;12818:88;12975:3;13043:22;;;21596:13;12991:18;;;12984:88;13150:3;13218:22;;;21596:13;13166:18;;;13159:88;13336:3;13404:22;;;21596:13;13352:18;;;13345:88;13516:3;13584:22;;;21596:13;13532:18;;;13525:88;13699:3;13767:22;;;21596:13;13715:18;;;13708:88;13873:3;13941:22;;;21596:13;13889:18;;;13882:88;14044:3;14111:22;;;6118:13;14060:18;;;14053:87;14216:3;14283:22;;;6118:13;14232:18;;;14225:87;14384:3;14451:22;;;6118:13;14400:18;;;14393:87;14551:3;14618:22;;;6118:13;14567:18;;;14560:87;14714:3;14781:22;;;6118:13;14730:18;;;14723:87;14880:3;14947:22;;;6118:13;14896:18;;;14889:87;15040:3;15107:22;;;6118:13;15056:18;;;15049:87;15203:3;15270:22;;;6118:13;15219:18;;;15212:87;15367:3;15434:22;;;6118:13;15383:18;;;15376:87;15535:3;15602:22;;;6118:13;15551:18;;;15544:87;15708:4;15776:22;;;6118:13;15725:18;;;15718:87;15881:4;15949:22;;;6118:13;15898:18;;;15891:87;16042:4;16110:22;;;6118:13;16059:18;;;16052:87;16205:4;16273:22;;;6118:13;16222:18;;;16215:87;16368:4;16436:22;;;6118:13;16385:18;;;16378:87;16533:4;16601:22;;;6118:13;16550:18;;;16543:87;16698:4;16735:81;16812:3;16788:22;;;16735:81;:::i;:::-;16715:18;;;16708:109;16891:4;16928:81;17005:3;16981:22;;;16928:81;:::i;:::-;16919:6;16912:5;16908:18;16901:109;17126:82;17204:3;10059:6;17184:9;17180:22;17126:82;:::i;:::-;17117:6;17110:5;17106:18;17099:110;17319:82;17397:3;17282:4;17377:9;17373:22;17319:82;:::i;:::-;17299:18;;;17292:110;17515:82;17593:3;17478:4;17569:22;;17515:82;:::i;:::-;17506:6;17499:5;17495:18;17488:110;17702:82;17780:3;17665:4;17760:9;17756:22;17702:82;:::i;:::-;17693:6;17682:18;;17675:110;17686:5;29873:215;-1:-1;;;;29873:215::o;30095:290::-;;30223:3;;30211:9;30202:7;30198:23;30194:33;30191:2;;;-1:-1;;30230:12;30191:2;18169:22;30223:3;18169:22;:::i;:::-;18288:74;18358:3;18334:22;18288:74;:::i;:::-;18263:100;;18430:2;18484:22;;;21448:20;18445:16;;;18438:75;18587:2;18641:22;;;21448:20;18602:16;;;18595:75;18739:2;18793:22;;;21448:20;18754:16;;;18747:75;18891:3;18946:22;;;21448:20;18907:16;;;18900:75;19047:3;19102:22;;;21448:20;19063:16;;;19056:75;19201:3;19256:22;;;21448:20;19217:16;;;19210:75;19359:3;19413:22;;;5972:20;19375:16;;;19368:74;19514:3;19570:22;;;5972:20;19530:18;;;19523:76;19666:3;19722:22;;;5972:20;19682:18;;;19675:76;19827:3;19883:22;;;5972:20;19843:18;;;19836:76;19994:3;20050:22;;;5972:20;20010:18;;;20003:76;20161:3;20217:22;;;5972:20;20177:18;;;20170:76;20333:3;20389:22;;;5972:20;20349:18;;;20342:76;20489:3;20545:22;;;5972:20;20505:18;;;20498:76;20647:3;20703:22;;;5972:20;20663:18;;;20656:76;20797:3;20853:22;;;5972:20;20813:18;;;20806:76;20956:3;21012:22;;;5972:20;20972:18;;;20965:76;21110:3;21166:22;;;5972:20;21126:18;;;21119:76;21268:3;21324:22;;;5972:20;21284:18;;;21277:76;;;;-1:-1;18270:16;;30185:200;-1:-1;;30185:200::o;30662:259::-;;30775:2;30763:9;30754:7;30750:23;30746:32;30743:2;;;-1:-1;;30781:12;30743:2;21741:6;21735:13;95056:4;101716:5;95045:16;101693:5;101690:33;101680:2;;-1:-1;;101727:12;31110:103;-1:-1;;;;;94840:54;31171:37;;31165:48::o;33101:166::-;97434:1;97427:5;97424:12;97414:2;;97440:9;97414:2;33187:75;;33181:86::o;33455:140::-;92684:47;92725:5;92684:47;:::i;33757:162::-;92836:58;92888:5;92836:58;:::i;34272:148::-;98035:2;98028:5;98025:13;98015:2;;98042:9;34590:148;98152:2;98145:5;98142:13;98132:2;;98159:9;36335:146;98845:1;98838:5;98835:12;98825:2;;98851:9;46276:925;21461:6;21448:20;32576:3;32569:37;91997:2;46509:16;91988:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;92836;92888:5;92836:58;:::i;:::-;91997:2;46786:14;;36127:55;91033:12;;;1807:20;1832:47;1807:20;1832:47;:::i;:::-;92684;92725:5;92684:47;:::i;:::-;91033:12;46984:14;;36715:55;91337:12;;;725:20;750:30;725:20;750:30;:::i;:::-;32269:5;92179:13;92172:21;91337:12;47169:3;47165:14;32242:34;;46386:815;;:::o;47239:764::-;47435:16;47429:23;32576:3;32569:37;47597:4;47590:5;47586:16;47580:23;92836:58;92888:5;92836:58;:::i;:::-;47597:4;47662:14;;36127:55;47753:4;47742:16;;47736:23;92684:47;47736:23;92684:47;:::i;:::-;47753:4;47818:14;;36715:55;47913:4;47902:16;;;47896:23;92179:13;92172:21;47967:14;;32242:34;47339:664::o;48851:725::-;21461:6;21448:20;32576:3;32569:37;91997:2;49082:16;91988:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;92836;92888:5;92836:58;:::i;:::-;91997:2;49359:14;;36127:55;91033:12;;;725:20;750:30;725:20;750:30;:::i;:::-;32269:5;92179:13;92172:21;91033:12;49544:3;49540:14;32242:34;;48959:617;;:::o;49612:606::-;49806:16;49800:23;32576:3;32569:37;49968:4;49961:5;49957:16;49951:23;92836:58;92888:5;92836:58;:::i;:::-;49968:4;50033:14;;36127:55;50128:4;50117:16;;;50111:23;92179:13;92172:21;50182:14;;32242:34;49710:508::o;60808:7977::-;61060:79;61124:14;61037:16;61031:23;61060:79;:::i;:::-;61222:4;61215:5;61211:16;61205:23;61234:75;61222:4;61298:3;61294:14;61280:12;61234:75;:::i;:::-;;61396:4;61389:5;61385:16;61379:23;61408:79;61396:4;61476:3;61472:14;61458:12;61408:79;:::i;:::-;;61580:4;61573:5;61569:16;61563:23;61592:85;61580:4;61666:3;61662:14;61648:12;61592:85;:::i;:::-;;61773:4;61766:5;61762:16;61756:23;61785:88;61773:4;61862:3;61858:14;61844:12;61785:88;:::i;:::-;;61968:4;61961:5;61957:16;61951:23;61980:87;61968:4;62056:3;62052:14;62038:12;61980:87;:::i;:::-;;62155:4;62148:5;62144:16;62138:23;62167:80;62155:4;62236:3;62232:14;62218:12;62167:80;:::i;:::-;;62333:4;62326:5;62322:16;62316:23;62345:78;62333:4;62412:3;62408:14;62394:12;62345:78;:::i;:::-;;62506:6;;62499:5;62495:18;62489:25;62520:77;62506:6;62584:3;62580:16;62566:12;62520:77;:::i;:::-;;;62680:6;;62673:5;62669:18;62663:25;62694:65;62680:6;62746:3;62742:16;62728:12;62694:65;:::i;:::-;;;62852:6;;62845:5;62841:18;62835:25;62866:65;62852:6;62918:3;62914:16;62900:12;62866:65;:::i;:::-;-1:-1;;63031:6;63020:18;;;63014:25;63093:16;;;32569:37;63201:6;63190:18;;;63184:25;63263:16;;;32569:37;63365:6;63354:18;;;63348:25;63427:16;;;32569:37;63538:6;63527:18;;;63521:25;63600:16;;;32569:37;63704:6;63693:18;;;63687:25;63766:16;;;32569:37;63870:6;63859:18;;;63853:25;63932:16;;;32569:37;64045:6;64034:18;;;64028:25;64107:16;;;32569:37;64231:6;64220:18;;;64214:25;64293:16;;;32569:37;64411:6;64400:18;;;64394:25;64473:16;;;32569:37;64594:6;64583:18;;;64577:25;64656:16;;;32569:37;64768:6;64757:18;;;64751:25;64830:16;;;32569:37;64939:6;64928:18;;;64922:25;64999:16;;;32569:37;65110:6;65099:18;;;65093:25;65170:16;;;32569:37;65277:6;65266:18;;;65260:25;65337:16;;;32569:37;65443:6;65432:18;;;65426:25;65503:16;;;32569:37;65605:6;65594:18;;;65588:25;65665:16;;;32569:37;65770:6;65759:18;;;65753:25;65830:16;;;32569:37;65929:6;65918:18;;;65912:25;65989:16;;;32569:37;66091:6;66080:18;;;66074:25;66151:16;;;32569:37;66254:6;66243:18;;;66237:25;66314:16;;;32569:37;66421:6;66410:18;;;66404:25;66481:16;;;32569:37;66593:6;66582:18;;;66576:25;66653:16;;;32569:37;66764:6;66753:18;;;66747:25;66824:16;;;32569:37;66923:6;66912:18;;;66906:25;66983:16;;;32569:37;67084:6;67073:18;;;67067:25;67144:16;;;32569:37;67245:6;67234:18;;;67228:25;67305:16;;;32569:37;67408:6;67397:18;;;67391:25;67468:16;;;32569:37;67571:6;67560:18;;;67554:25;67585:107;67675:16;;;67554:25;67585:107;:::i;:::-;;;67784:6;67777:5;67773:18;67767:25;67897:6;67798:107;67897:6;67892:3;67888:16;67874:12;67798:107;:::i;:::-;68002:6;67995:5;67991:18;67985:25;67965:45;;68016:109;68117:6;68112:3;68108:16;68094:12;68016:109;:::i;:::-;68205:18;;68199:25;;-1:-1;68230:109;68331:6;68322:16;;68199:25;68230:109;:::i;:::-;;68433:6;68426:5;68422:18;68416:25;68447:109;68548:6;68543:3;68539:16;68525:12;68447:109;:::i;:::-;;68641:6;68634:5;68630:18;68624:25;68655:109;68756:6;68751:3;68747:16;68733:12;68655:109;:::i;72831:222::-;-1:-1;;;;;94840:54;;;;31171:37;;72958:2;72943:18;;72929:124::o;73060:333::-;-1:-1;;;;;94840:54;;;31171:37;;94840:54;;73379:2;73364:18;;31171:37;73215:2;73200:18;;73186:207::o;73400:370::-;73577:2;73591:47;;;88847:12;;73562:18;;;89122:19;;;73400:370;;73577:2;88701:14;;;;89162;;;;73400:370;31897:260;31922:6;31919:1;31916:13;31897:260;;;31983:13;;32569:37;;88977:14;;;;31082;;;;31944:1;31937:9;31897:260;;;-1:-1;73644:116;;73548:222;-1:-1;;;;;;73548:222::o;73777:210::-;92179:13;;92172:21;32242:34;;73898:2;73883:18;;73869:118::o;73994:317::-;92179:13;;92172:21;32242:34;;74297:2;74282:18;;32569:37;74141:2;74126:18;;74112:199::o;74318:222::-;32569:37;;;74445:2;74430:18;;74416:124::o;74547:444::-;32569:37;;;-1:-1;;;;;94840:54;;;74894:2;74879:18;;31171:37;94840:54;74977:2;74962:18;;31171:37;74730:2;74715:18;;74701:290::o;74998:459::-;32569:37;;;-1:-1;;;75443:2;75428:18;;38129:26;75216:2;75201:18;;75187:270::o;75464:459::-;32569:37;;;-1:-1;;;75909:2;75894:18;;40282:32;75682:2;75667:18;;75653:270::o;75930:459::-;32569:37;;;-1:-1;;;76375:2;76360:18;;41993:32;76148:2;76133:18;;76119:270::o;76396:459::-;32569:37;;;-1:-1;;;76841:2;76826:18;;42176:34;76614:2;76599:18;;76585:270::o;76862:218::-;-1:-1;;;;;;92345:78;;;;33053:36;;76987:2;76972:18;;76958:122::o;77087:359::-;77255:2;77240:18;;98512:2;98502:13;;98492:2;;98519:9;98492:2;35684:63;;;77432:2;77417:18;32569:37;77226:220;:::o;77678:416::-;77878:2;77892:47;;;37809:2;77863:18;;;89122:19;37845:34;89162:14;;;37825:55;37914:32;37900:12;;;37893:54;37966:12;;;77849:245::o;78101:416::-;78301:2;78315:47;;;38394:2;78286:18;;;89122:19;38430:34;89162:14;;;38410:55;38499:31;38485:12;;;38478:53;38550:12;;;78272:245::o;78524:416::-;78724:2;78738:47;;;38801:2;78709:18;;;89122:19;38837:34;89162:14;;;38817:55;-1:-1;;;38892:12;;;38885:30;38934:12;;;78695:245::o;78947:416::-;79147:2;79161:47;;;39185:2;79132:18;;;89122:19;39221:34;89162:14;;;39201:55;39290:27;39276:12;;;39269:49;39337:12;;;79118:245::o;79370:416::-;79570:2;79584:47;;;39588:2;79555:18;;;89122:19;39624:34;89162:14;;;39604:55;-1:-1;;;39679:12;;;39672:39;39730:12;;;79541:245::o;79793:416::-;79993:2;80007:47;;;39981:2;79978:18;;;89122:19;40017:34;89162:14;;;39997:55;-1:-1;;;40072:12;;;40065:35;40119:12;;;79964:245::o;80216:416::-;80416:2;80430:47;;;40553:2;80401:18;;;89122:19;40589:34;89162:14;;;40569:55;-1:-1;;;40644:12;;;40637:44;40700:12;;;80387:245::o;80639:416::-;80839:2;80853:47;;;40951:2;80824:18;;;89122:19;40987:34;89162:14;;;40967:55;41056:26;41042:12;;;41035:48;41102:12;;;80810:245::o;81062:416::-;81262:2;81276:47;;;41353:2;81247:18;;;89122:19;41389:34;89162:14;;;41369:55;-1:-1;;;41444:12;;;41437:33;41489:12;;;81233:245::o;81485:416::-;81685:2;81699:47;;;81670:18;;;89122:19;41776:34;89162:14;;;41756:55;41830:12;;;81656:245::o;81908:416::-;82108:2;82122:47;;;42449:2;82093:18;;;89122:19;42485:34;89162:14;;;42465:55;42554:25;42540:12;;;42533:47;42599:12;;;82079:245::o;82331:416::-;82531:2;82545:47;;;42850:2;82516:18;;;89122:19;42886:34;89162:14;;;42866:55;42955:27;42941:12;;;42934:49;43002:12;;;82502:245::o;82754:416::-;82954:2;82968:47;;;43253:2;82939:18;;;89122:19;43289:34;89162:14;;;43269:55;-1:-1;;;43344:12;;;43337:39;43395:12;;;82925:245::o;83177:416::-;83377:2;83391:47;;;43646:2;83362:18;;;89122:19;43682:34;89162:14;;;43662:55;-1:-1;;;43737:12;;;43730:44;43793:12;;;83348:245::o;83600:416::-;83800:2;83814:47;;;44044:2;83785:18;;;89122:19;44080:34;89162:14;;;44060:55;44149:34;44135:12;;;44128:56;-1:-1;;;44204:12;;;44197:26;44242:12;;;83771:245::o;84023:351::-;44554:23;;-1:-1;;;;;94840:54;;;31171:37;;44739:4;44728:16;;;44722:23;94840:54;;44799:14;;;31171:37;44908:4;44897:16;;;44891:23;94840:54;;44968:14;;;31171:37;45081:4;45070:16;;;45064:23;94840:54;45141:14;;;31171:37;;;;84214:3;84199:19;;84185:189::o;84674:405::-;32569:37;;;85065:2;85050:18;;32569:37;84861:2;84846:18;;84832:247::o;85086:519::-;32569:37;;;85329:4;85314:20;;85591:2;90379:12;;;;51225:87;;85576:18;;90335:57;90379:12;51202:16;90335:57;:::i;:::-;51225:87;:::i;:::-;51378:64;51425:16;51418:5;51378:64;:::i;:::-;51448:83;51516:14;85580:9;51516:14;51502:12;51448:83;:::i;:::-;;;51601:68;51516:14;51656:5;51652:16;51645:5;51601:68;:::i;:::-;51675:87;51747:14;85580:9;51747:14;51733:12;51675:87;:::i;:::-;;51838:74;51747:14;51899:5;51895:16;51888:5;51838:74;:::i;:::-;51918:93;51996:14;85580:9;51996:14;51982:12;51918:93;:::i;:::-;;52090:77;51996:14;52154:5;52150:16;52143:5;52090:77;:::i;:::-;52173:96;52254:14;85580:9;52254:14;52240:12;52173:96;:::i;:::-;;52347:76;52254:14;52410:5;52406:16;52399:5;52347:76;:::i;:::-;52429:95;52509:14;85580:9;52509:14;52495:12;52429:95;:::i;:::-;;52595:69;52509:14;52651:5;52647:16;52640:5;52595:69;:::i;:::-;52670:88;52743:14;85580:9;52743:14;52729:12;52670:88;:::i;:::-;;52827:67;52743:14;52881:5;52877:16;52870:5;52827:67;:::i;:::-;52971:14;52900:86;52971:14;85580:9;52971:14;52957:12;52900:86;:::i;:::-;53052:66;52971:14;53103:5;53099:18;53092:5;53052:66;:::i;:::-;53032:86;;;53192:16;53124:85;53192:16;85580:9;53192:16;53178:12;53124:85;:::i;:::-;53275:52;53192:16;53312:5;53308:18;53301:5;53275:52;:::i;:::-;53255:72;;;53389:16;53333:73;53389:16;85580:9;53389:16;53375:12;53333:73;:::i;:::-;53482:52;53389:16;53519:5;53515:18;53508:5;53482:52;:::i;:::-;53462:72;;;53596:16;53540:73;53596:16;85580:9;53596:16;53582:12;53540:73;:::i;:::-;53810:16;;;53596;53733:5;53729:18;994:20;53810:16;85580:9;53810:16;32569:37;;54015:16;53810;53938:5;53934:18;21448:20;54015:16;85580:9;54015:16;32569:37;54214:16;;;54015;54137:5;54133:18;21448:20;54214:16;85580:9;54214:16;32569:37;;54422:16;54214;54345:5;54341:18;21448:20;54422:16;85580:9;54422:16;32569:37;54623:16;;;54422;54546:5;54542:18;21448:20;54623:16;85580:9;54623:16;32569:37;;54824:16;54623;54747:5;54743:18;21448:20;54824:16;85580:9;54824:16;32569:37;55034:16;;;54824;54957:5;54953:18;21448:20;55034:16;85580:9;55034:16;32569:37;;55255:16;55034;55178:5;55174:18;21448:20;55255:16;85580:9;55255:16;32569:37;55470:16;;;55255;55393:5;55389:18;21448:20;55470:16;85580:9;55470:16;32569:37;;55688:16;55470;55611:5;55607:18;21448:20;55688:16;85580:9;55688:16;32569:37;55897:16;;;55688;55820:5;55816:18;21448:20;55897:16;85580:9;55897:16;32569:37;;56100:16;55897;56025:5;56021:18;5972:20;56100:16;85580:9;56100:16;32569:37;56305:16;;;56100;56230:5;56226:18;5972:20;56305:16;85580:9;56305:16;32569:37;;56506:16;56305;56431:5;56427:18;5972:20;56506:16;85580:9;56506:16;32569:37;56706:16;;;56506;56631:5;56627:18;5972:20;56706:16;85580:9;56706:16;32569:37;;56902:16;56706;56827:5;56823:18;5972:20;56902:16;85580:9;56902:16;32569:37;57101:16;;;56902;57026:5;57022:18;5972:20;57101:16;85580:9;57101:16;32569:37;;57294:16;57101;57219:5;57215:18;5972:20;57294:16;85580:9;57294:16;32569:37;57490:16;;;57294;57415:5;57411:18;5972:20;57490:16;85580:9;57490:16;32569:37;;57687:16;57490;57612:5;57608:18;5972:20;57687:16;85580:9;57687:16;32569:37;57888:16;;;57687;57813:5;57809:18;5972:20;57888:16;85580:9;57888:16;32569:37;;58094:16;57888;58019:5;58015:18;5972:20;58094:16;85580:9;58094:16;32569:37;58299:16;;;58094;58224:5;58220:18;5972:20;58299:16;85580:9;58299:16;32569:37;;58492:16;58299;58417:5;58413:18;5972:20;58492:16;85580:9;58492:16;32569:37;58687:16;;;58492;58612:5;58608:18;5972:20;58687:16;85580:9;58687:16;32569:37;;58882:16;58687;58807:5;58803:18;5972:20;58882:16;85580:9;58882:16;32569:37;59079:16;;;58882;59004:5;59000:18;5972:20;59079:16;85580:9;59079:16;32569:37;;59246:117;59346:16;85580:9;59346:16;59079;59225:5;59221:18;59246:117;:::i;:::-;;59519;59619:16;85580:9;59619:16;59505:6;59498:5;59494:18;59519:117;:::i;:::-;59798:119;59900:16;85580:9;59900:16;59784:6;59777:5;59773:18;59798:119;:::i;:::-;60073;60175:16;85580:9;60175:16;60059:6;60052:5;60048:18;60073:119;:::i;:::-;60351;60453:16;85580:9;60453:16;60337:6;60330:5;60326:18;60351:119;:::i;:::-;60620;60722:16;85580:9;60722:16;60606:6;60599:5;60595:18;60620:119;:::i;85612:367::-;;85811:3;85800:9;85796:19;85788:27;;45615:16;45609:23;32576:3;32569:37;45783:4;45776:5;45772:16;45766:23;45783:4;45847:3;45843:14;32569:37;95815:51;45938:4;45931:5;45927:16;45921:23;95815:51;:::i;:::-;45938:4;46027:3;46023:14;34185:75;95648:51;46117:4;46110:5;46106:16;46100:23;95648:51;:::i;:::-;46117:4;46206:3;46202:14;34012:75;85782:197;;;;:::o;85986:311::-;86157:3;86142:19;;86172:115;86146:9;86260:6;86172:115;:::i;86304:306::-;86473:2;86458:18;;86487:113;86462:9;86573:6;86487:113;:::i;86617:332::-;86798:4;86783:20;;86814:125;86787:9;86912:6;86814:125;:::i;86956:584::-;87206:4;87191:20;;87222:125;87195:9;87320:6;87222:125;:::i;:::-;32599:5;87426:4;87415:9;87411:20;32569:37;98512:2;98505:5;98502:13;98492:2;;98519:9;98492:2;96594:39;87524:4;87513:9;87509:20;35684:63;87177:363;;;;;;:::o;87547:319::-;;87722:3;87711:9;87707:19;87699:27;;69080:86;69151:14;69057:16;69051:23;69080:86;:::i;:::-;69251:4;69240:16;;;69234:23;69311:14;;;32569:37;69418:4;69407:16;;;69401:23;69478:14;;;32569:37;69580:4;69569:16;;;69563:23;69640:14;;;32569:37;69742:4;69731:16;;;69725:23;69802:14;;;32569:37;69907:4;69896:16;;;69890:23;69967:14;;;32569:37;70070:4;70059:16;;;70053:23;70130:14;;;32569:37;70237:4;70226:16;;;70220:23;70295:14;;;32569:37;70400:6;70389:18;;;70383:25;70460:16;;;32569:37;70562:6;70551:18;;;70545:25;70622:16;;;32569:37;70733:6;70722:18;;;70716:25;70793:16;;;32569:37;70910:6;70899:18;;;70893:25;70970:16;;;32569:37;71087:6;71076:18;;;71070:25;71147:16;;;32569:37;71269:6;71258:18;;;71252:25;71329:16;;;32569:37;71435:6;71424:18;;;71418:25;71495:16;;;32569:37;71603:6;71592:18;;;71586:25;71663:16;;;32569:37;71763:6;71752:18;;;71746:25;71823:16;;;32569:37;71932:6;71921:18;;;71915:25;71992:16;;;32569:37;72096:6;72085:18;;;72079:25;72156:16;;;32569:37;72264:6;72253:18;;;72247:25;72324:16;;;;32569:37;;;;87693:173;:::o;88102:214::-;95056:4;95045:16;;;;72784:35;;88225:2;88210:18;;88196:120::o;88323:256::-;88385:2;88379:9;88411:17;;;88486:18;88471:34;;88507:22;;;88468:62;88465:2;;;88543:1;;88533:12;88465:2;88385;88552:22;88363:216;;-1:-1;88363:216::o;89363:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;89741:173::-;;1447:6;1434:20;1459:60;1513:5;1459:60;:::i;89923:147::-;;1820:6;1807:20;1832:47;1873:5;1832:47;:::i;90079:155::-;;2735:6;2722:20;2747:51;2792:5;2747:51;:::i;90407:167::-;;2165:6;2152:20;2177:58;2229:5;2177:58;:::i;91061:153::-;;4997:6;4984:20;5009:50;5053:5;5009:50;:::i;92906:160::-;92984:16;97794:1;97784:12;;97774:2;;97800:9;97463:105;97546:1;97539:5;97536:12;97526:2;;97552:9;97526:2;97520:48;:::o;97575:116::-;97669:1;97662:5;97659:12;97649:2;;97675:9;99096:117;-1:-1;;;;;94840:54;;99155:35;;99145:2;;99204:1;;99194:12;99220:111;99301:5;92179:13;92172:21;99279:5;99276:32;99266:2;;99322:1;;99312:12;99584:121;99680:1;99673:5;99670:12;99660:2;;99696:1;;99686:12;99712:108;99795:1;99788:5;99785:12;99775:2;;99811:1;;99801:12;99827:119;99921:1;99914:5;99911:12;99901:2;;99937:1;;99927:12;99953:121;100049:1;100042:5;100039:12;100029:2;;100065:1;;100055:12;100209:113;100296:2;100289:5;100286:13;100276:2;;100313:1;;100303:12;100329:113;100416:2;100409:5;100406:13;100396:2;;100433:1;;100423:12;100701:110;100785:2;100778:5;100775:13;100765:2;;100802:1;;100792:12;101041:111;101127:1;101120:5;101117:12;101107:2;;101143:1;;101133:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol\";\n\nimport \"../Base/SharedTypes.sol\";\nimport \"../Base/AssetRegistry/BaseRegistry.sol\";\nimport \"./PAMEncoder.sol\";\nimport \"./IPAMRegistry.sol\";\n\n\n/**\n * @title PAMRegistry\n * @notice Registry for ACTUS Protocol assets\n */\ncontract PAMRegistry is BaseRegistry, IPAMRegistry {\n\n    using PAMEncoder for Asset;\n\n    \n    constructor()\n        public\n        BaseRegistry()\n    {}\n\n    /**\n     * @notice\n     * @param assetId id of the asset\n     * @param terms asset specific terms (PAMTerms)\n     * @param state initial state of the asset\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine ACTUS Engine of the asset\n     * @param actor account which is allowed to update the asset state\n     * @param admin account which as admin rights (optional)\n     */\n    function registerAsset(\n        bytes32 assetId,\n        PAMTerms calldata terms,\n        State calldata state,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address actor,\n        address admin\n    )\n        external\n        override\n        onlyApprovedActors\n    {\n        setAsset(assetId, state, schedule, ownership, engine, actor, admin);\n        assets[assetId].encodeAndSetPAMTerms(terms);\n    }\n\n    /**\n     * @notice Returns the terms of an asset.\n     * @param assetId id of the asset\n     * @return terms of the asset\n     */\n    function getTerms(bytes32 assetId)\n        external\n        view\n        override\n        returns (PAMTerms memory)\n    {\n        return assets[assetId].decodeAndGetPAMTerms();\n    }\n\n    /**\n     * @notice Set the terms of the asset\n     * @dev Can only be set by authorized account.\n     * @param assetId id of the asset\n     * @param terms new terms\n     */\n    function setTerms(bytes32 assetId, PAMTerms calldata terms)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetPAMTerms(terms);\n        emit UpdatedTerms(assetId);\n    }\n\n    function getEnumValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint8)\n    {\n        return assets[assetId].decodeAndGetEnumValueForPAMAttribute(attribute);\n    }\n\n    function getAddressValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (address)\n    {\n        return assets[assetId].decodeAndGetAddressValueForForPAMAttribute(attribute);\n    }\n\n    function getBytes32ValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (bytes32)\n    {\n        return assets[assetId].decodeAndGetBytes32ValueForForPAMAttribute(attribute);\n    }\n\n    function getUIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint256)\n    {\n        return assets[assetId].decodeAndGetUIntValueForForPAMAttribute(attribute);\n    }\n\n    function getIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (int256)\n    {\n        return assets[assetId].decodeAndGetIntValueForForPAMAttribute(attribute);\n    }\n\n    function getPeriodValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IP memory)\n    {\n        return assets[assetId].decodeAndGetPeriodValueForForPAMAttribute(attribute);\n    }\n\n    function getCycleValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IPS memory)\n    {\n        return assets[assetId].decodeAndGetCycleValueForForPAMAttribute(attribute);\n    }\n\n    function getContractReferenceValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (ContractReference memory)\n    {\n        return assets[assetId].decodeAndGetContractReferenceValueForPAMAttribute(attribute);\n    }\n\n    function getNextCyclicEvent(bytes32 assetId)\n        internal\n        view\n        override(TermsRegistry)\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        PAMTerms memory terms = asset.decodeAndGetPAMTerms();\n\n        EventType nextEventType;\n        uint256 nextScheduleTimeOffset;\n\n        // IP\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IPAMEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.IP],\n                EventType.IP\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset < nextScheduleTimeOffset)\n                || (nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }\n        }\n\n        // IPCI\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IPAMEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.IPCI],\n                EventType.IPCI\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // FP\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IPAMEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.FP],\n                EventType.FP\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // SC\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(IPAMEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.SC],\n                EventType.SC\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        return encodeEvent(nextEventType, nextScheduleTimeOffset);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMRegistry.sol",
    "exportedSymbols": {
      "PAMRegistry": [
        17494
      ]
    },
    "id": 17495,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16954,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:45"
      },
      {
        "id": 16955,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:45"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "id": 16956,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 32534,
        "src": "101:68:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 16957,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 7865,
        "src": "171:33:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 16958,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 4422,
        "src": "205:48:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMEncoder.sol",
        "file": "./PAMEncoder.sol",
        "id": 16959,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 16953,
        "src": "254:26:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/IPAMRegistry.sol",
        "file": "./IPAMRegistry.sol",
        "id": 16960,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 14721,
        "src": "281:28:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16962,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 16963,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:45"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16964,
              "name": "IPAMRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14720,
              "src": "426:12:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                "typeString": "contract IPAMRegistry"
              }
            },
            "id": 16965,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:45"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          14720,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 16961,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:45",
          "text": " @title PAMRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 17494,
        "linearizedBaseContracts": [
          17494,
          14720,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "PAMRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 16968,
            "libraryName": {
              "contractScope": null,
              "id": 16966,
              "name": "PAMEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16952,
              "src": "452:10:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMEncoder_$16952",
                "typeString": "library PAMEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:45",
            "typeName": {
              "contractScope": null,
              "id": 16967,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:45",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 16973,
              "nodeType": "Block",
              "src": "540:2:45",
              "statements": []
            },
            "documentation": null,
            "id": 16974,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 16971,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16970,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "521:12:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "521:14:45"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 16969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "495:2:45"
            },
            "returnParameters": {
              "id": 16972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "540:0:45"
            },
            "scope": 17494,
            "src": "484:58:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              14705
            ],
            "body": {
              "id": 17015,
              "nodeType": "Block",
              "src": "1319:137:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16999,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16977,
                        "src": "1338:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17000,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16981,
                        "src": "1347:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17001,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16984,
                        "src": "1354:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17002,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16986,
                        "src": "1364:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17003,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16988,
                        "src": "1375:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17004,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16990,
                        "src": "1383:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17005,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16992,
                        "src": "1390:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 16998,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1329:8:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 17006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1329:67:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17007,
                  "nodeType": "ExpressionStatement",
                  "src": "1329:67:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17012,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16979,
                        "src": "1443:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17008,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1406:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17010,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17009,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16977,
                          "src": "1413:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1406:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17011,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15695,
                      "src": "1406:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct PAMTerms memory)"
                      }
                    },
                    "id": 17013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1406:43:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17014,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:43:45"
                }
              ]
            },
            "documentation": {
              "id": 16975,
              "nodeType": "StructuredDocumentation",
              "src": "548:434:45",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (PAMTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "d9399431",
            "id": 17016,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 16996,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16995,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1296:18:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1296:18:45"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 16994,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1279:8:45"
            },
            "parameters": {
              "id": 16993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16977,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1019:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16979,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1044:23:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16978,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1044:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16981,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1077:20:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16980,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1077:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16984,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1107:27:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16982,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1107:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 16983,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1107:9:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16986,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1144:33:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16985,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1144:14:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16988,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1187:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16990,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1211:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16992,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1234:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1009:244:45"
            },
            "returnParameters": {
              "id": 16997,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1319:0:45"
            },
            "scope": 17494,
            "src": "987:469:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14712
            ],
            "body": {
              "id": 17031,
              "nodeType": "Block",
              "src": "1716:62:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17025,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1733:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17027,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17026,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17019,
                          "src": "1740:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1733:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17028,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16403,
                      "src": "1733:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 17029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1733:38:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "functionReturnParameters": 17024,
                  "id": 17030,
                  "nodeType": "Return",
                  "src": "1726:45:45"
                }
              ]
            },
            "documentation": {
              "id": 17017,
              "nodeType": "StructuredDocumentation",
              "src": "1462:129:45",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 17032,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17021,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1669:8:45"
            },
            "parameters": {
              "id": 17020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17019,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17032,
                  "src": "1614:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:17:45"
            },
            "returnParameters": {
              "id": 17024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17032,
                  "src": "1695:15:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17022,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1695:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1694:17:45"
            },
            "scope": 17494,
            "src": "1596:182:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14719
            ],
            "body": {
              "id": 17055,
              "nodeType": "Block",
              "src": "2090:96:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17048,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17037,
                        "src": "2137:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17044,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2100:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17046,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17045,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17035,
                          "src": "2107:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2100:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15695,
                      "src": "2100:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct PAMTerms memory)"
                      }
                    },
                    "id": 17049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2100:43:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17050,
                  "nodeType": "ExpressionStatement",
                  "src": "2100:43:45"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17052,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17035,
                        "src": "2171:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17051,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2158:12:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 17053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2158:21:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17054,
                  "nodeType": "EmitStatement",
                  "src": "2153:26:45"
                }
              ]
            },
            "documentation": {
              "id": 17033,
              "nodeType": "StructuredDocumentation",
              "src": "1784:172:45",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "e13b36fd",
            "id": 17056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17041,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17035,
                    "src": "2077:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17042,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17040,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2063:12:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2063:22:45"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17039,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2046:8:45"
            },
            "parameters": {
              "id": 17038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17035,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17056,
                  "src": "1979:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17034,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17037,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17056,
                  "src": "1996:23:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17036,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1996:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1978:42:45"
            },
            "returnParameters": {
              "id": 17043,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2090:0:45"
            },
            "scope": 17494,
            "src": "1961:225:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 17075,
              "nodeType": "Block",
              "src": "2371:87:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17072,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17060,
                        "src": "2441:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17068,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2388:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17070,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17069,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17058,
                          "src": "2395:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2388:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16608,
                      "src": "2388:52:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 17073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2388:63:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 17067,
                  "id": 17074,
                  "nodeType": "Return",
                  "src": "2381:70:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 17076,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17064,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17062,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2312:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17063,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2328:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2303:39:45"
            },
            "parameters": {
              "id": 17061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17058,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2231:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17060,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2248:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17059,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2248:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2230:36:45"
            },
            "returnParameters": {
              "id": 17067,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17066,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2360:5:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 17065,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2360:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2359:7:45"
            },
            "scope": 17494,
            "src": "2192:266:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 17095,
              "nodeType": "Block",
              "src": "2648:93:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17092,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17080,
                        "src": "2724:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17088,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2665:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17090,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17089,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17078,
                          "src": "2672:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2665:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17091,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16672,
                      "src": "2665:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 17093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:69:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 17087,
                  "id": 17094,
                  "nodeType": "Return",
                  "src": "2658:76:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 17096,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17084,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17082,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2587:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17083,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2603:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2578:39:45"
            },
            "parameters": {
              "id": 17081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17078,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2506:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17077,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2506:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17080,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2523:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17079,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2523:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2505:36:45"
            },
            "returnParameters": {
              "id": 17087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17086,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2635:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17085,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2635:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:9:45"
            },
            "scope": 17494,
            "src": "2464:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 17115,
              "nodeType": "Block",
              "src": "2931:93:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17112,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17100,
                        "src": "3007:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17108,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2948:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17110,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17109,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17098,
                          "src": "2955:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2948:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17111,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16687,
                      "src": "2948:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 17113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:69:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17107,
                  "id": 17114,
                  "nodeType": "Return",
                  "src": "2941:76:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 17116,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17104,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17102,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2870:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17103,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2886:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2861:39:45"
            },
            "parameters": {
              "id": 17101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17098,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2789:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17097,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2789:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17100,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2806:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17099,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:36:45"
            },
            "returnParameters": {
              "id": 17107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17106,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2918:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17105,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2917:9:45"
            },
            "scope": 17494,
            "src": "2747:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 17135,
              "nodeType": "Block",
              "src": "3211:90:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17132,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17120,
                        "src": "3284:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17128,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3228:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17130,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17129,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17118,
                          "src": "3235:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3228:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17131,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16705,
                      "src": "3228:55:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 17133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3228:66:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17127,
                  "id": 17134,
                  "nodeType": "Return",
                  "src": "3221:73:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 17136,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17124,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17122,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3150:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17123,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3166:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3141:39:45"
            },
            "parameters": {
              "id": 17121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17118,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3069:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17117,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17120,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3086:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17119,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3068:36:45"
            },
            "returnParameters": {
              "id": 17127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17126,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3198:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3198:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3197:9:45"
            },
            "scope": 17494,
            "src": "3030:271:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 17155,
              "nodeType": "Block",
              "src": "3486:89:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17152,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17140,
                        "src": "3558:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17148,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3503:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17150,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17149,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17138,
                          "src": "3510:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3503:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16723,
                      "src": "3503:54:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 17153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3503:65:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 17147,
                  "id": 17154,
                  "nodeType": "Return",
                  "src": "3496:72:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 17156,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17144,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17142,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3426:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17143,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3442:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3417:39:45"
            },
            "parameters": {
              "id": 17141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17138,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3345:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17137,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3345:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17140,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3362:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17139,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3362:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:36:45"
            },
            "returnParameters": {
              "id": 17147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17146,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3474:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 17145,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3474:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3473:8:45"
            },
            "scope": 17494,
            "src": "3307:268:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 17175,
              "nodeType": "Block",
              "src": "3766:92:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17172,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17160,
                        "src": "3841:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17168,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3783:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17170,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17169,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17158,
                          "src": "3790:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3783:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17171,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16809,
                      "src": "3783:57:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 17173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:68:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 17167,
                  "id": 17174,
                  "nodeType": "Return",
                  "src": "3776:75:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 17176,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17164,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17162,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3703:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17163,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3719:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3694:39:45"
            },
            "parameters": {
              "id": 17161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17158,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3622:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17157,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3622:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17160,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3639:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17159,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3621:36:45"
            },
            "returnParameters": {
              "id": 17167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17166,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3751:9:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17165,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3751:2:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3750:11:45"
            },
            "scope": 17494,
            "src": "3581:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 17195,
              "nodeType": "Block",
              "src": "4049:91:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17192,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17180,
                        "src": "4123:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17188,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4066:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17190,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17189,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17178,
                          "src": "4073:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4066:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16924,
                      "src": "4066:56:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 17193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4066:67:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 17187,
                  "id": 17194,
                  "nodeType": "Return",
                  "src": "4059:74:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 17196,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17184,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17182,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3985:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17183,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4001:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3976:39:45"
            },
            "parameters": {
              "id": 17181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17178,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "3904:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17180,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "3921:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17179,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3921:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3903:36:45"
            },
            "returnParameters": {
              "id": 17187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17186,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "4033:10:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17185,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4033:3:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4032:12:45"
            },
            "scope": 17494,
            "src": "3864:276:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 17215,
              "nodeType": "Block",
              "src": "4357:100:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17212,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17200,
                        "src": "4440:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17208,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4374:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17210,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17209,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17198,
                          "src": "4381:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4374:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17211,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16951,
                      "src": "4374:65:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) pure returns (struct ContractReference memory)"
                      }
                    },
                    "id": 17213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4374:76:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 17207,
                  "id": 17214,
                  "nodeType": "Return",
                  "src": "4367:83:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 17216,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17204,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17202,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4279:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17203,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4295:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4270:39:45"
            },
            "parameters": {
              "id": 17201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17198,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4198:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17200,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4215:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17199,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4197:36:45"
            },
            "returnParameters": {
              "id": 17207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17206,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4327:24:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17205,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4327:17:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:26:45"
            },
            "scope": 17494,
            "src": "4146:311:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 17492,
              "nodeType": "Block",
              "src": "4600:3226:45",
              "statements": [
                {
                  "assignments": [
                    17226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17226,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4610:19:45",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17225,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4610:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17230,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17227,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4632:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 17229,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17228,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17218,
                      "src": "4639:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4632:15:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:37:45"
                },
                {
                  "assignments": [
                    17232
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17232,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4657:21:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                        "typeString": "struct PAMTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17231,
                        "name": "PAMTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 23006,
                        "src": "4657:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                          "typeString": "struct PAMTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17236,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17233,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17226,
                        "src": "4681:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 17234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16403,
                      "src": "4681:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 17235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4681:28:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4657:52:45"
                },
                {
                  "assignments": [
                    17238
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17238,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4720:23:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17237,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4720:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17239,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4720:23:45"
                },
                {
                  "assignments": [
                    17241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17241,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4753:30:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17240,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4753:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17242,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4753:30:45"
                },
                {
                  "id": 17297,
                  "nodeType": "Block",
                  "src": "4808:670:45",
                  "statements": [
                    {
                      "assignments": [
                        17244,
                        17246
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17244,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17297,
                          "src": "4823:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17243,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4823:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17246,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17297,
                          "src": "4844:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17245,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4844:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17264,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17253,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "4951:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17254,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "4974:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17255,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4974:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17256,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4974:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17259,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17257,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5019:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5019:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4974:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17260,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5050:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5050:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17249,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "4897:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17250,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4897:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17248,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "4886:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4886:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "4886:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4886:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17247,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4874:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4874:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4822:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17265,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5114:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5140:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5114:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17268,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5113:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17269,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17246,
                                  "src": "5163:18:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17270,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5184:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5163:43:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17272,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5162:45:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5113:94:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17274,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5228:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17275,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17246,
                                  "src": "5254:18:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5228:44:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17278,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17244,
                                      "src": "5291:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17277,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5276:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5276:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17281,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "5319:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17280,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5304:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5304:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5276:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5228:105:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17285,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5227:107:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5113:221:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17296,
                      "nodeType": "IfStatement",
                      "src": "5092:376:45",
                      "trueBody": {
                        "id": 17295,
                        "nodeType": "Block",
                        "src": "5349:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17287,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "5367:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17288,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17246,
                                "src": "5392:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5367:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17290,
                            "nodeType": "ExpressionStatement",
                            "src": "5367:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17291,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "5428:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17292,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17244,
                                "src": "5444:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5428:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17294,
                            "nodeType": "ExpressionStatement",
                            "src": "5428:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17360,
                  "nodeType": "Block",
                  "src": "5504:736:45",
                  "statements": [
                    {
                      "assignments": [
                        17299,
                        17301
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17299,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17360,
                          "src": "5519:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17298,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5519:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17301,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17360,
                          "src": "5540:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17300,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5540:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17319,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17308,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "5647:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17309,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "5670:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17310,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5670:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17311,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5670:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17314,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17312,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5715:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IPCI",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5715:14:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5670:60:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17315,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5748:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IPCI",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5748:14:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17304,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "5593:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17305,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5593:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17303,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "5582:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5582:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "5582:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5582:194:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17302,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5570:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5570:207:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5518:259:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17320,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5814:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5840:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5814:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17323,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5813:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17324,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5863:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5885:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5863:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17327,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5890:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17328,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "5911:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5890:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5863:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17331,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5862:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5813:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17333,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5955:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17334,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5977:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5955:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17336,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "5982:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17337,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "6008:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5982:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5955:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17341,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17299,
                                      "src": "6045:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17340,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6030:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6030:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17344,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "6073:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17343,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6058:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6058:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6030:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5955:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17348,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5954:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5813:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17359,
                      "nodeType": "IfStatement",
                      "src": "5792:430:45",
                      "trueBody": {
                        "id": 17358,
                        "nodeType": "Block",
                        "src": "6103:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17350,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "6121:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17351,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17301,
                                "src": "6146:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6121:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17353,
                            "nodeType": "ExpressionStatement",
                            "src": "6121:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17354,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "6182:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17355,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17299,
                                "src": "6198:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6182:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17357,
                            "nodeType": "ExpressionStatement",
                            "src": "6182:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17423,
                  "nodeType": "Block",
                  "src": "6264:732:45",
                  "statements": [
                    {
                      "assignments": [
                        17362,
                        17364
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17362,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17423,
                          "src": "6279:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17361,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6279:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17364,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17423,
                          "src": "6300:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17363,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6300:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17382,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17371,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "6407:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17372,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "6430:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17373,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6430:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17374,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6430:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17377,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17375,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6475:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6475:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6430:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17378,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6506:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6506:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17367,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "6353:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17368,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6353:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17366,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "6342:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6342:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "6342:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6342:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17365,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6330:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6330:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6278:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17383,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "6570:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6596:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6570:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17386,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6569:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17387,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6619:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6641:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6619:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17390,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6646:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17391,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "6667:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6646:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6619:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17394,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6618:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6569:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17396,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6711:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6733:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6711:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17399,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "6738:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17400,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6764:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6738:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6711:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17404,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17362,
                                      "src": "6801:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17403,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6786:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6786:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17407,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "6829:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17406,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6814:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6814:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6786:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6711:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17411,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6710:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6569:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17422,
                      "nodeType": "IfStatement",
                      "src": "6548:430:45",
                      "trueBody": {
                        "id": 17421,
                        "nodeType": "Block",
                        "src": "6859:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17413,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "6877:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17414,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17364,
                                "src": "6902:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6877:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17416,
                            "nodeType": "ExpressionStatement",
                            "src": "6877:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17417,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "6938:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17418,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17362,
                                "src": "6954:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6938:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17420,
                            "nodeType": "ExpressionStatement",
                            "src": "6938:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17486,
                  "nodeType": "Block",
                  "src": "7020:732:45",
                  "statements": [
                    {
                      "assignments": [
                        17425,
                        17427
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17425,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17486,
                          "src": "7035:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17424,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7035:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17427,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17486,
                          "src": "7056:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17426,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7056:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17445,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17434,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "7163:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17435,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "7186:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17436,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7186:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17437,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7186:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17440,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17438,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7231:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7231:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7186:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17441,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7262:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "SC",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7262:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17430,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "7109:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17431,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7109:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17429,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "7098:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7098:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "7098:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7098:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17428,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7086:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7086:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7034:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17446,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "7326:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7352:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7326:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17449,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7325:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17450,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7375:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7397:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7375:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17453,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7402:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17454,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "7423:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7402:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7375:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17457,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7374:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7325:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17459,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7467:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7489:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7467:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17462,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "7494:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17463,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7520:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7494:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7467:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17467,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17425,
                                      "src": "7557:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17466,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7542:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7542:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17470,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "7585:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17469,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7570:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7570:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7542:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7467:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17474,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7466:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7325:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17485,
                      "nodeType": "IfStatement",
                      "src": "7304:430:45",
                      "trueBody": {
                        "id": 17484,
                        "nodeType": "Block",
                        "src": "7615:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17476,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "7633:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17477,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17427,
                                "src": "7658:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7633:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17479,
                            "nodeType": "ExpressionStatement",
                            "src": "7633:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17480,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "7694:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17481,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17425,
                                "src": "7710:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7694:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17483,
                            "nodeType": "ExpressionStatement",
                            "src": "7694:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17488,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "7781:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17489,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17241,
                        "src": "7796:22:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17487,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "7769:11:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 17490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7769:50:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17224,
                  "id": 17491,
                  "nodeType": "Return",
                  "src": "7762:57:45"
                }
              ]
            },
            "documentation": null,
            "id": 17493,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17221,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17220,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4555:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4546:23:45"
            },
            "parameters": {
              "id": 17219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17218,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17493,
                  "src": "4491:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17217,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4490:17:45"
            },
            "returnParameters": {
              "id": 17224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17223,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17493,
                  "src": "4587:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17222,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4587:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4586:9:45"
            },
            "scope": 17494,
            "src": "4463:3363:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17495,
        "src": "388:7440:45"
      }
    ],
    "src": "41:7788:45"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMRegistry.sol",
    "exportedSymbols": {
      "PAMRegistry": [
        17494
      ]
    },
    "id": 17495,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16954,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:45"
      },
      {
        "id": 16955,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:45"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "id": 16956,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 32534,
        "src": "101:68:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 16957,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 7865,
        "src": "171:33:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 16958,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 4422,
        "src": "205:48:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMEncoder.sol",
        "file": "./PAMEncoder.sol",
        "id": 16959,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 16953,
        "src": "254:26:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/IPAMRegistry.sol",
        "file": "./IPAMRegistry.sol",
        "id": 16960,
        "nodeType": "ImportDirective",
        "scope": 17495,
        "sourceUnit": 14721,
        "src": "281:28:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16962,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "412:12:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 16963,
            "nodeType": "InheritanceSpecifier",
            "src": "412:12:45"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 16964,
              "name": "IPAMRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14720,
              "src": "426:12:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                "typeString": "contract IPAMRegistry"
              }
            },
            "id": 16965,
            "nodeType": "InheritanceSpecifier",
            "src": "426:12:45"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          14720,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 16961,
          "nodeType": "StructuredDocumentation",
          "src": "312:75:45",
          "text": " @title PAMRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 17494,
        "linearizedBaseContracts": [
          17494,
          14720,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "PAMRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 16968,
            "libraryName": {
              "contractScope": null,
              "id": 16966,
              "name": "PAMEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16952,
              "src": "452:10:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PAMEncoder_$16952",
                "typeString": "library PAMEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "446:27:45",
            "typeName": {
              "contractScope": null,
              "id": 16967,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "467:5:45",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 16973,
              "nodeType": "Block",
              "src": "540:2:45",
              "statements": []
            },
            "documentation": null,
            "id": 16974,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 16971,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16970,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "521:12:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "521:14:45"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 16969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "495:2:45"
            },
            "returnParameters": {
              "id": 16972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "540:0:45"
            },
            "scope": 17494,
            "src": "484:58:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              14705
            ],
            "body": {
              "id": 17015,
              "nodeType": "Block",
              "src": "1319:137:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 16999,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16977,
                        "src": "1338:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17000,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16981,
                        "src": "1347:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17001,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16984,
                        "src": "1354:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17002,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16986,
                        "src": "1364:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17003,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16988,
                        "src": "1375:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17004,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16990,
                        "src": "1383:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17005,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16992,
                        "src": "1390:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 16998,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1329:8:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 17006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1329:67:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17007,
                  "nodeType": "ExpressionStatement",
                  "src": "1329:67:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17012,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16979,
                        "src": "1443:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17008,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1406:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17010,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17009,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16977,
                          "src": "1413:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1406:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17011,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15695,
                      "src": "1406:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct PAMTerms memory)"
                      }
                    },
                    "id": 17013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1406:43:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17014,
                  "nodeType": "ExpressionStatement",
                  "src": "1406:43:45"
                }
              ]
            },
            "documentation": {
              "id": 16975,
              "nodeType": "StructuredDocumentation",
              "src": "548:434:45",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (PAMTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "d9399431",
            "id": 17016,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 16996,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 16995,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1296:18:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1296:18:45"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 16994,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1279:8:45"
            },
            "parameters": {
              "id": 16993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16977,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1019:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16979,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1044:23:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16978,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1044:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16981,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1077:20:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16980,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1077:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16984,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1107:27:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16982,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1107:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 16983,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1107:9:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16986,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1144:33:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 16985,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1144:14:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16988,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1187:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1187:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16990,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1211:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16992,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17016,
                  "src": "1234:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1009:244:45"
            },
            "returnParameters": {
              "id": 16997,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1319:0:45"
            },
            "scope": 17494,
            "src": "987:469:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14712
            ],
            "body": {
              "id": 17031,
              "nodeType": "Block",
              "src": "1716:62:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17025,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1733:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17027,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17026,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17019,
                          "src": "1740:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1733:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17028,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16403,
                      "src": "1733:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 17029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1733:38:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "functionReturnParameters": 17024,
                  "id": 17030,
                  "nodeType": "Return",
                  "src": "1726:45:45"
                }
              ]
            },
            "documentation": {
              "id": 17017,
              "nodeType": "StructuredDocumentation",
              "src": "1462:129:45",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 17032,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17021,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1669:8:45"
            },
            "parameters": {
              "id": 17020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17019,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17032,
                  "src": "1614:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:17:45"
            },
            "returnParameters": {
              "id": 17024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17032,
                  "src": "1695:15:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17022,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1695:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1694:17:45"
            },
            "scope": 17494,
            "src": "1596:182:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14719
            ],
            "body": {
              "id": 17055,
              "nodeType": "Block",
              "src": "2090:96:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17048,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17037,
                        "src": "2137:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17044,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2100:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17046,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17045,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17035,
                          "src": "2107:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2100:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15695,
                      "src": "2100:36:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct PAMTerms memory)"
                      }
                    },
                    "id": 17049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2100:43:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17050,
                  "nodeType": "ExpressionStatement",
                  "src": "2100:43:45"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17052,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17035,
                        "src": "2171:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17051,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2158:12:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 17053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2158:21:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17054,
                  "nodeType": "EmitStatement",
                  "src": "2153:26:45"
                }
              ]
            },
            "documentation": {
              "id": 17033,
              "nodeType": "StructuredDocumentation",
              "src": "1784:172:45",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "e13b36fd",
            "id": 17056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17041,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17035,
                    "src": "2077:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17042,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17040,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2063:12:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2063:22:45"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17039,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2046:8:45"
            },
            "parameters": {
              "id": 17038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17035,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17056,
                  "src": "1979:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17034,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17037,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17056,
                  "src": "1996:23:45",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17036,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "1996:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1978:42:45"
            },
            "returnParameters": {
              "id": 17043,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2090:0:45"
            },
            "scope": 17494,
            "src": "1961:225:45",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 17075,
              "nodeType": "Block",
              "src": "2371:87:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17072,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17060,
                        "src": "2441:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17068,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2388:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17070,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17069,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17058,
                          "src": "2395:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2388:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16608,
                      "src": "2388:52:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 17073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2388:63:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 17067,
                  "id": 17074,
                  "nodeType": "Return",
                  "src": "2381:70:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 17076,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17064,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17062,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2312:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17063,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2328:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2303:39:45"
            },
            "parameters": {
              "id": 17061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17058,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2231:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17060,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2248:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17059,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2248:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2230:36:45"
            },
            "returnParameters": {
              "id": 17067,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17066,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17076,
                  "src": "2360:5:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 17065,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2360:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2359:7:45"
            },
            "scope": 17494,
            "src": "2192:266:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 17095,
              "nodeType": "Block",
              "src": "2648:93:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17092,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17080,
                        "src": "2724:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17088,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2665:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17090,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17089,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17078,
                          "src": "2672:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2665:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17091,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16672,
                      "src": "2665:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 17093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2665:69:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 17087,
                  "id": 17094,
                  "nodeType": "Return",
                  "src": "2658:76:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 17096,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17084,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17082,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2587:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17083,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2603:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2578:39:45"
            },
            "parameters": {
              "id": 17081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17078,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2506:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17077,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2506:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17080,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2523:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17079,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2523:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2505:36:45"
            },
            "returnParameters": {
              "id": 17087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17086,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17096,
                  "src": "2635:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17085,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2635:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:9:45"
            },
            "scope": 17494,
            "src": "2464:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 17115,
              "nodeType": "Block",
              "src": "2931:93:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17112,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17100,
                        "src": "3007:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17108,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2948:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17110,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17109,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17098,
                          "src": "2955:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2948:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17111,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16687,
                      "src": "2948:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 17113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2948:69:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17107,
                  "id": 17114,
                  "nodeType": "Return",
                  "src": "2941:76:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 17116,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17104,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17102,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2870:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17103,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2886:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2861:39:45"
            },
            "parameters": {
              "id": 17101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17098,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2789:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17097,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2789:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17100,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2806:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17099,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:36:45"
            },
            "returnParameters": {
              "id": 17107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17106,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17116,
                  "src": "2918:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17105,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2917:9:45"
            },
            "scope": 17494,
            "src": "2747:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 17135,
              "nodeType": "Block",
              "src": "3211:90:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17132,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17120,
                        "src": "3284:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17128,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3228:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17130,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17129,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17118,
                          "src": "3235:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3228:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17131,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16705,
                      "src": "3228:55:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 17133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3228:66:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17127,
                  "id": 17134,
                  "nodeType": "Return",
                  "src": "3221:73:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 17136,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17124,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17122,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3150:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17123,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3166:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3141:39:45"
            },
            "parameters": {
              "id": 17121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17118,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3069:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17117,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3069:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17120,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3086:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17119,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3086:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3068:36:45"
            },
            "returnParameters": {
              "id": 17127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17126,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17136,
                  "src": "3198:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3198:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3197:9:45"
            },
            "scope": 17494,
            "src": "3030:271:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 17155,
              "nodeType": "Block",
              "src": "3486:89:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17152,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17140,
                        "src": "3558:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17148,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3503:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17150,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17149,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17138,
                          "src": "3510:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3503:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16723,
                      "src": "3503:54:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 17153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3503:65:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 17147,
                  "id": 17154,
                  "nodeType": "Return",
                  "src": "3496:72:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 17156,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17144,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17142,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3426:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17143,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3442:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3417:39:45"
            },
            "parameters": {
              "id": 17141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17138,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3345:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17137,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3345:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17140,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3362:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17139,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3362:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:36:45"
            },
            "returnParameters": {
              "id": 17147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17146,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17156,
                  "src": "3474:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 17145,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3474:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3473:8:45"
            },
            "scope": 17494,
            "src": "3307:268:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 17175,
              "nodeType": "Block",
              "src": "3766:92:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17172,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17160,
                        "src": "3841:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17168,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3783:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17170,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17169,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17158,
                          "src": "3790:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3783:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17171,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16809,
                      "src": "3783:57:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 17173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:68:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 17167,
                  "id": 17174,
                  "nodeType": "Return",
                  "src": "3776:75:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 17176,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17164,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17162,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3703:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17163,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3719:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3694:39:45"
            },
            "parameters": {
              "id": 17161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17158,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3622:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17157,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3622:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17160,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3639:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17159,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3621:36:45"
            },
            "returnParameters": {
              "id": 17167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17166,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17176,
                  "src": "3751:9:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17165,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3751:2:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3750:11:45"
            },
            "scope": 17494,
            "src": "3581:277:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 17195,
              "nodeType": "Block",
              "src": "4049:91:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17192,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17180,
                        "src": "4123:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17188,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4066:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17190,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17189,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17178,
                          "src": "4073:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4066:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16924,
                      "src": "4066:56:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 17193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4066:67:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 17187,
                  "id": 17194,
                  "nodeType": "Return",
                  "src": "4059:74:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 17196,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17184,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17182,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3985:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17183,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4001:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3976:39:45"
            },
            "parameters": {
              "id": 17181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17178,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "3904:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3904:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17180,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "3921:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17179,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3921:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3903:36:45"
            },
            "returnParameters": {
              "id": 17187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17186,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17196,
                  "src": "4033:10:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17185,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4033:3:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4032:12:45"
            },
            "scope": 17494,
            "src": "3864:276:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 17215,
              "nodeType": "Block",
              "src": "4357:100:45",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17212,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17200,
                        "src": "4440:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17208,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4374:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 17210,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17209,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17198,
                          "src": "4381:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4374:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 17211,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForPAMAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16951,
                      "src": "4374:65:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) pure returns (struct ContractReference memory)"
                      }
                    },
                    "id": 17213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4374:76:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 17207,
                  "id": 17214,
                  "nodeType": "Return",
                  "src": "4367:83:45"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 17216,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17204,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17202,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4279:14:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 17203,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4295:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4270:39:45"
            },
            "parameters": {
              "id": 17201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17198,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4198:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4198:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17200,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4215:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17199,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4197:36:45"
            },
            "returnParameters": {
              "id": 17207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17206,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17216,
                  "src": "4327:24:45",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17205,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4327:17:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4326:26:45"
            },
            "scope": 17494,
            "src": "4146:311:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 17492,
              "nodeType": "Block",
              "src": "4600:3226:45",
              "statements": [
                {
                  "assignments": [
                    17226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17226,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4610:19:45",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17225,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4610:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17230,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 17227,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4632:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 17229,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 17228,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17218,
                      "src": "4639:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4632:15:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4610:37:45"
                },
                {
                  "assignments": [
                    17232
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17232,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4657:21:45",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                        "typeString": "struct PAMTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17231,
                        "name": "PAMTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 23006,
                        "src": "4657:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                          "typeString": "struct PAMTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17236,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17233,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17226,
                        "src": "4681:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 17234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPAMTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16403,
                      "src": "4681:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 17235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4681:28:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4657:52:45"
                },
                {
                  "assignments": [
                    17238
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17238,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4720:23:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 17237,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4720:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17239,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4720:23:45"
                },
                {
                  "assignments": [
                    17241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17241,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17492,
                      "src": "4753:30:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17240,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4753:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17242,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4753:30:45"
                },
                {
                  "id": 17297,
                  "nodeType": "Block",
                  "src": "4808:670:45",
                  "statements": [
                    {
                      "assignments": [
                        17244,
                        17246
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17244,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17297,
                          "src": "4823:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17243,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4823:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17246,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17297,
                          "src": "4844:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17245,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4844:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17264,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17253,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "4951:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17254,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "4974:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17255,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "4974:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17256,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "4974:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17259,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17257,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5019:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5019:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4974:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17260,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5050:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5050:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17249,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "4897:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17250,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4897:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17248,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "4886:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4886:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "4886:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4886:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17247,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4874:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4874:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4822:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17265,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5114:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5140:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5114:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17268,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5113:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17269,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17246,
                                  "src": "5163:18:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17270,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5184:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5163:43:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17272,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5162:45:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5113:94:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17274,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5228:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 17275,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17246,
                                  "src": "5254:18:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5228:44:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17278,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17244,
                                      "src": "5291:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17277,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5276:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5276:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17281,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "5319:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17280,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5304:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5304:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5276:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5228:105:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17285,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5227:107:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5113:221:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17296,
                      "nodeType": "IfStatement",
                      "src": "5092:376:45",
                      "trueBody": {
                        "id": 17295,
                        "nodeType": "Block",
                        "src": "5349:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17287,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "5367:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17288,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17246,
                                "src": "5392:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5367:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17290,
                            "nodeType": "ExpressionStatement",
                            "src": "5367:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17291,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "5428:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17292,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17244,
                                "src": "5444:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5428:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17294,
                            "nodeType": "ExpressionStatement",
                            "src": "5428:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17360,
                  "nodeType": "Block",
                  "src": "5504:736:45",
                  "statements": [
                    {
                      "assignments": [
                        17299,
                        17301
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17299,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17360,
                          "src": "5519:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17298,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5519:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17301,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17360,
                          "src": "5540:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17300,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5540:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17319,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17308,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "5647:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17309,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "5670:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17310,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5670:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17311,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5670:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17314,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17312,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5715:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "IPCI",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5715:14:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5670:60:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17315,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5748:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "IPCI",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5748:14:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17304,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "5593:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17305,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5593:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17303,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "5582:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5582:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "5582:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5582:194:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17302,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5570:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5570:207:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5518:259:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17320,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "5814:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5840:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5814:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17323,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5813:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17324,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5863:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5885:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5863:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17329,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17327,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5890:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17328,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "5911:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5890:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5863:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17331,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5862:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5813:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17333,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "5955:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17334,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5977:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5955:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17336,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "5982:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17337,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17301,
                                    "src": "6008:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5982:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5955:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17341,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17299,
                                      "src": "6045:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17340,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6030:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6030:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17344,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "6073:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17343,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6058:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6058:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6030:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5955:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17348,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5954:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5813:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17359,
                      "nodeType": "IfStatement",
                      "src": "5792:430:45",
                      "trueBody": {
                        "id": 17358,
                        "nodeType": "Block",
                        "src": "6103:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17350,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "6121:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17351,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17301,
                                "src": "6146:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6121:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17353,
                            "nodeType": "ExpressionStatement",
                            "src": "6121:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17354,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "6182:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17355,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17299,
                                "src": "6198:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6182:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17357,
                            "nodeType": "ExpressionStatement",
                            "src": "6182:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17423,
                  "nodeType": "Block",
                  "src": "6264:732:45",
                  "statements": [
                    {
                      "assignments": [
                        17362,
                        17364
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17362,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17423,
                          "src": "6279:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17361,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6279:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17364,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17423,
                          "src": "6300:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17363,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6300:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17382,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17371,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "6407:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17372,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "6430:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17373,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6430:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17374,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6430:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17377,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17375,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6475:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "FP",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6475:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6430:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17378,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6506:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6506:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17367,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "6353:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17368,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6353:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17366,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "6342:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6342:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "6342:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6342:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17365,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6330:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6330:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6278:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17383,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "6570:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6596:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6570:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17386,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6569:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17387,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6619:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6641:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6619:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17390,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6646:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17391,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "6667:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6646:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6619:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17394,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6618:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6569:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17396,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6711:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6733:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6711:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17399,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "6738:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17400,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17364,
                                    "src": "6764:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6738:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6711:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17404,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17362,
                                      "src": "6801:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17403,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6786:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6786:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17407,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "6829:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17406,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6814:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6814:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6786:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6711:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17411,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6710:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6569:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17422,
                      "nodeType": "IfStatement",
                      "src": "6548:430:45",
                      "trueBody": {
                        "id": 17421,
                        "nodeType": "Block",
                        "src": "6859:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17413,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "6877:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17414,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17364,
                                "src": "6902:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6877:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17416,
                            "nodeType": "ExpressionStatement",
                            "src": "6877:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17417,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "6938:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17418,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17362,
                                "src": "6954:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6938:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17420,
                            "nodeType": "ExpressionStatement",
                            "src": "6938:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 17486,
                  "nodeType": "Block",
                  "src": "7020:732:45",
                  "statements": [
                    {
                      "assignments": [
                        17425,
                        17427
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17425,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17486,
                          "src": "7035:19:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 17424,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7035:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 17427,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 17486,
                          "src": "7056:26:45",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17426,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7056:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17445,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17434,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17232,
                                "src": "7163:5:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17435,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "7186:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17436,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7186:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 17437,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7186:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 17440,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17438,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7231:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 17439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "SC",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7231:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7186:58:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17441,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7262:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 17442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "SC",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7262:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                  "typeString": "struct PAMTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17430,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17226,
                                      "src": "7109:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 17431,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7109:12:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17429,
                                  "name": "IPAMEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32533,
                                  "src": "7098:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                                    "typeString": "type(contract IPAMEngine)"
                                  }
                                },
                                "id": 17432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7098:24:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                                  "typeString": "contract IPAMEngine"
                                }
                              },
                              "id": 17433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32501,
                              "src": "7098:47:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct PAMTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 17443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7098:190:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 17428,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7086:11:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 17444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7086:203:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7034:255:45"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 17446,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "7326:22:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7352:1:45",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7326:27:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17449,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7325:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17450,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7375:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7397:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7375:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17453,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7402:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17454,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "7423:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7402:43:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7375:70:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 17457,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7374:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7325:121:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 17473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17459,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7467:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7489:1:45",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7467:23:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 17462,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "7494:22:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 17463,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17427,
                                    "src": "7520:18:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7494:44:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7467:71:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17467,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17425,
                                      "src": "7557:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17466,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7542:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7542:25:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17470,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17238,
                                      "src": "7585:13:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 17469,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7570:14:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 17471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7570:29:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7542:57:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7467:132:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 17474,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7466:134:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7325:275:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 17485,
                      "nodeType": "IfStatement",
                      "src": "7304:430:45",
                      "trueBody": {
                        "id": 17484,
                        "nodeType": "Block",
                        "src": "7615:119:45",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17476,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "7633:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17477,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17427,
                                "src": "7658:18:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7633:43:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17479,
                            "nodeType": "ExpressionStatement",
                            "src": "7633:43:45"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 17482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 17480,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17238,
                                "src": "7694:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 17481,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17425,
                                "src": "7710:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7694:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 17483,
                            "nodeType": "ExpressionStatement",
                            "src": "7694:25:45"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17488,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "7781:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17489,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17241,
                        "src": "7796:22:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17487,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "7769:11:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 17490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7769:50:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17224,
                  "id": 17491,
                  "nodeType": "Return",
                  "src": "7762:57:45"
                }
              ]
            },
            "documentation": null,
            "id": 17493,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17221,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 17220,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4555:13:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4546:23:45"
            },
            "parameters": {
              "id": 17219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17218,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17493,
                  "src": "4491:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17217,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4490:17:45"
            },
            "returnParameters": {
              "id": 17224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17223,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17493,
                  "src": "4587:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17222,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4587:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4586:9:45"
            },
            "scope": 17494,
            "src": "4463:3363:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17495,
        "src": "388:7440:45"
      }
    ],
    "src": "41:7788:45"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "PAMEncoder": "0x9bd2c9DBA7aF3CA673BA744c2538cfAA1f8F8927"
      },
      "address": "0x2194Bd1c5F48EacCBDC2b894abe98aFa116aCED8",
      "transactionHash": "0x52f681db0eb965030f0983cf6fa30a912ca44c85c8037ac775c25c534fa7f484"
    },
    "5": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "PAMEncoder": "0x6AFB6963b1d183f27CD355349556F0F5294db9fF"
      },
      "address": "0xA236D539a239C7A49Cee6a79033585cDb44ba83F",
      "transactionHash": "0xdd5c7a473ceec5da97d9a11986245cd82107a90c97c75f38c66924f575da7bd4"
    },
    "1994": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "PAMEncoder": "0x1B3B145d4234Cd48EA33ABdD333F6E62767960A2"
      },
      "address": "0xCD4359f9AB7070d825fe0311d86Abc689c09A6fC",
      "transactionHash": "0x1c64d84441b03a96c6514b6a12b6f589bd81b7f73c9672a07609e99f5bc3c764"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.046Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approveActor(address)": {
        "details": "Can only be called by the owner of the contract.",
        "params": {
          "actor": "address of the actor"
        }
      },
      "getActor(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the asset actor"
        }
      },
      "getEngine(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the engine of the asset"
        }
      },
      "getEventAtIndex(bytes32,uint256)": {
        "params": {
          "assetId": "id of the asset",
          "index": "index of the event to return"
        },
        "returns": {
          "_0": "Event"
        }
      },
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getNextScheduleIndex(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Index"
        }
      },
      "getNextScheduledEvent(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "event"
        }
      },
      "getOwnership(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "addresses of all owners of the asset"
        }
      },
      "getSchedule(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "the schedule"
        }
      },
      "getScheduleLength(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Length of the schedule"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getTerms(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "terms of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "isEventSettled(bytes32,bytes32)": {
        "params": {
          "_event": "event (encoded)",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if event was settled"
        }
      },
      "isRegistered(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if asset exist"
        }
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "_event": "event (encoded) to be marked as settled",
          "assetId": "id of the asset"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "popNextScheduledEvent(bytes32)": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,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[],(address,address,address,address),address,address,address)": {
        "params": {
          "actor": "account which is allowed to update the asset state",
          "admin": "account which as admin rights (optional)",
          "engine": "ACTUS Engine of the asset",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "state": "initial state of the asset",
          "terms": "asset specific terms (PAMTerms)"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setActor(bytes32,address)": {
        "params": {
          "actor": "address of the Actor contract",
          "assetId": "id of the asset"
        }
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current counterparty beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyBeneficiary": "address of the new beneficiary"
        }
      },
      "setCounterpartyObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyObligor": "address of the new counterparty obligor"
        }
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current creator beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorBeneficiary": "address of the new beneficiary"
        }
      },
      "setCreatorObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorObligor": "address of the new creator obligor"
        }
      },
      "setEngine(bytes32,address)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "engine": "new engine address"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "terms": "new terms"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "PAMRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "approveActor(address)": {
        "notice": "Approves the address of an actor contract e.g. for registering assets."
      },
      "getActor(bytes32)": {
        "notice": "Returns the address of the actor which is allowed to update the state of the asset."
      },
      "getEngine(bytes32)": {
        "notice": "Returns the address of a the ACTUS engine corresponding to the ContractType of an asset."
      },
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "getEventAtIndex(bytes32,uint256)": {
        "notice": "Returns an event for a given position (index) in a schedule of a given asset."
      },
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getNextScheduleIndex(bytes32)": {
        "notice": "Returns the index of the next event to be processed for a schedule of an asset."
      },
      "getNextScheduledEvent(bytes32)": {
        "notice": "Returns the next event to process."
      },
      "getNextUnderlyingEvent(bytes32)": {
        "notice": "If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event."
      },
      "getOwnership(bytes32)": {
        "notice": "Retrieves the registered addresses of owners (creator, counterparty) of an asset."
      },
      "getSchedule(bytes32)": {
        "notice": "Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)"
      },
      "getScheduleLength(bytes32)": {
        "notice": "Returns the length of a schedule of a given asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getTerms(bytes32)": {
        "notice": "Returns the terms of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "isEventSettled(bytes32,bytes32)": {
        "notice": "Returns true if an event of an assets schedule was settled"
      },
      "isRegistered(bytes32)": {
        "notice": "Returns if there is an asset registerd for a given assetId"
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "notice": "Mark an event as settled"
      },
      "popNextScheduledEvent(bytes32)": {
        "notice": "Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)"
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,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[],(address,address,address,address),address,address,address)": {
        "notice": "@param assetId id of the asset"
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setActor(bytes32,address)": {
        "notice": "Set the address of the Actor contract which should be going forward."
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "notice": "Updates the address of the default beneficiary of cashflows going to the counterparty."
      },
      "setCounterpartyObligor(bytes32,address)": {
        "notice": "Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset."
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "notice": "Update the address of the default beneficiary of cashflows going to the creator."
      },
      "setCreatorObligor(bytes32,address)": {
        "notice": "Update the address of the obligor which has to fulfill obligations for the creator of the asset."
      },
      "setEngine(bytes32,address)": {
        "notice": "Set the engine address which should be used for the asset going forward."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,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,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)))": {
        "notice": "Set the terms of the asset"
      }
    },
    "notice": "Registry for ACTUS Protocol assets",
    "version": 1
  }
}